【问题标题】:How to check permission for sms in miui phonesmiui手机如何查看短信权限
【发布时间】:2017-05-13 10:55:55
【问题描述】:

我听说miui手机也需要棉花糖的权限,所以我为它编写了一些代码。

它在其他手机上运行良好,但是当我在 MIUI 设备上测试它时,无论我接受许可还是拒绝许可,它都会返回 0。

下面我放了检查权限的代码

if ( android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M )
{
    checkAndRequestPermissions(); // this method first check for permisison if not granted then call ActivityCompact.checkSelfPermisison(context,permisison);
}
else
{
    int permission = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    Log.d("Permission status","Status"+permission);
}

【问题讨论】:

  • this post可以看到MIUI的OS比android更早地提供了自己的权限管理。所以这些都有问题。但我没有看到任何帮助...
  • AxelH 我有一个按钮,点击发送短信,进度条可见,直到短信发送。但是在miui中,如果我拒绝了短信权限,进度条仍然可见,所以我想检查是否未授予权限,然后不发送短信也不显示进度条。所以请帮忙提出一些建议。
  • 我明白了你的问题......但正如我所说,这似乎是 MIUI 上的一个问题,因为它们过去提供了不同的系统,导致了一些错误。不知道是否有解决方案,永远不要在这些设备上工作(甚至不知道它们......)但是有了这些信息,您可以尝试在此基础上进行一些研究。
  • 好的,谢谢你的回答
  • 试试这个它可能是工作 stackoverflow.com/a/41221852/5488468

标签: android android-6.0-marshmallow android-permissions user-permissions runtime-permissions


【解决方案1】:

请添加此代码并调用 checkUsagePermission 函数检查在棉花糖上面的 miui 中读取短信的权限

private boolean checkUsagePermission() {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
        AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
        int mode = 0;
        mode = appOps.checkOpNoThrow("android:read_sms", android.os.Process.myUid(), getPackageName());
        boolean granted = mode == AppOpsManager.MODE_ALLOWED;
        if (!granted) {
            //write your code for accept that permission
            return false;
        }
    }
    return true;
}

【讨论】:

    【解决方案2】:

    这是棉花糖及以上版本的示例代码:

    公共静态类实用程序{ 公共静态最终 int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 123;

        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        public static boolean checkPermission(final Context context) {
            int currentAPIVersion = Build.VERSION.SDK_INT;
            if (currentAPIVersion >= android.os.Build.VERSION_CODES.M) {
                if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
                        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context, R.style.MyAlertDialogStyle);
                        alertBuilder.setCancelable(true);
                        alertBuilder.setTitle("Permission necessary");
                        alertBuilder.setMessage("External storage permission is necessary");
                        alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
                            public void onClick(DialogInterface dialog, int which) {
                                ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                            }
                        });
                        AlertDialog alert = alertBuilder.create();
                        alert.show();
    
                    } else {
                        ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                    }
                    return false;
                } else {
                    return true;
                }
            } else {
                return true;
            }
        }
    }
    

    这是一种检查读取外部存储权限的方法。请参考代码并进行相应操作。希望这对您有所帮助。

    在 onCreate 方法中也加入这段代码

    布尔结果 = Utility.checkPermission(MainActivity.this);

    【讨论】:

    • Ravish Sharma 我的代码在其他设备上运行良好,但不仅在 MIUI 设备上运行它总是返回 0 来接受和拒绝权限我把同样的东西放在 checkAndRequestPermissions() 方法中
    • 这就是我给你代码的原因,你可以检查一下,这个代码是否也适用于 MIUI 设备
    • 它总是返回我接受或拒绝许可的真实天气。
    • 我有一个按钮,点击发送短信,进度条可见,直到短信发送。但是在miui中,如果我拒绝了短信权限,进度条仍然可见,所以我想检查是否未授予权限,然后不发送短信也不显示进度条。
    猜你喜欢
    • 2016-07-21
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多