2017-12-08 15 views
1

EasyPermission을 사용하여 permissions을 사용했습니다.Xiaomi 전화에서 프로그래밍 방식으로 메시지를 읽을 수 없습니다.

@AfterPermissionGranted(PERMISSIONS_REQUEST_READ_SMS) 
private void readSMS() { 
    String[] perms = {Manifest.permission.READ_SMS}; 
    if (EasyPermissions.hasPermissions(this, Manifest.permission.READ_SMS)) { 
     initSMS(); 
    } else { 
     // Do not have permissions, request them now 
     EasyPermissions.requestPermissions(this, getString(R.string.send_sms_rationale), 
       PERMISSIONS_REQUEST_READ_SMS, Manifest.permission.READ_SMS); 
    } 
} 

initSMS()에서 안드로이드 장치에서 메시지를 읽으려고했습니다. Xiaomi 기기를 제외한 모든 기기에서 정상적으로 작동합니다. 메시지를 읽으려면 TelephonyProvider 클래스를 사용했습니다.

private void initSMS() { 
    TelephonyProvider provider = new TelephonyProvider(this); 
    List<Sms> sms = provider.getSms(TelephonyProvider.Filter.INBOX).getList(); 
    for(int i = 0; i <= sms.size() - 1; i++) { 
     Log.d("Address",sms.get(i).address); 
     Log.d("Sms",sms.get(i).body); 
     Log.d("ReceivedDate",""+sms.get(i).receivedDate)); 
     Log.d("State",""+sms.get(i).status); 
     Log.d("person",""+sms.get(i).person); 
    } 
} 

Xiaomi 기기의 모든 메시지를 읽을 수있는 방법이 있습니까?

+1

시도 [이 (https://stackoverflow.com/a/41061459/3117966)와 [이 (https://stackoverflow.com/a/38309200/3117966) – Nisarg

+0

감사 .. Nilu @ @Nisarg이 링크는 나를 위해 유용합니다. –

답변

0

이 기능이 도움이되기를 바랍니다. 먼저 miui mobile을 확인하기 위해 isMIUI() 함수를 호출 한 다음 위의 함수를 호출해야합니다. 이 기능은 서비스 SMS 권한을 얻기위한 설정으로 리디렉션됩니다.

private void onDisplayPopupPermission() { 

     try { 
      // MIUI 8 
      Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR"); 
      localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity"); 
      localIntent.putExtra("extra_pkgname", getPackageName()); 
      localIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
      localIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(localIntent); 


     } catch (Exception e) { 
      try { 
       // MIUI 5/6/7 
       Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR"); 
       localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity"); 
       localIntent.putExtra("extra_pkgname", getPackageName()); 
       localIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
       localIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(localIntent); 


      } catch (Exception e1) { 
       // Otherwise jump to application details 
       Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
       Uri uri = Uri.fromParts("package", getPackageName(), null); 
       intent.setData(uri); 
       startActivity(intent); 
      } 
     } 

    } 
+0

감사합니다. 이 코드는 나를 위해 일하고있다. 이제 miui 전화에 대한 허가 및 SMS를 받고 있습니다. –