【问题标题】:Unable to read messages programmatically from Xiaomi phones无法以编程方式从小米手机读取消息
【发布时间】:2017-12-08 12:47:27
【问题描述】:

我正在使用EasyPermission 从用户那里获取permissions

@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() 中,我曾尝试从 Android 设备读取消息。它适用于除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 设备的所有消息吗?

【问题讨论】:

  • 试试thisthis
  • 谢谢..@Nilu 和@Nisarg 这些链接对我有用。

标签: android sms android-permissions telephonymanager xiaomi


【解决方案1】:

我希望这对你有用。首先你必须调用函数 isMIUI() 来检查 miui mobile,然后调用上面的函数。此功能将重定向到获取服务短信权限的设置。

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);
            }
        }

    }

【讨论】:

  • 谢谢。这段代码对我有用。现在我正在获得 miui 手机的许可和短信。
  • 谢谢!您节省了一天!
  • 感谢您的回答。我们如何检查是否获得了许可?
  • @Sanju 你知道如何检查是否获得了许可吗?
猜你喜欢
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 2010-10-25
相关资源
最近更新 更多