android – 允许多次运行时权限

前端之家收集整理的这篇文章主要介绍了android – 允许多次运行时权限前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写代码,要求在组中的 android 6.0上获得多个运行时权限.一切都很好,我为此做了一些很好的例子,但仍然有问题.

在ActivityCompat.shouldShowRequestPermissionRationale(context,READ_PHONE_STATE)中,它给出了关于上下文的错误
错误的第一个论证背景请帮忙解决问题.

提前致谢

代码是:

if (ContextCompat
                    .checkSelfPermission(SpalshActivity.this,READ_PHONE_STATE)+ContextCompat.checkSelfPermission(context,WRITE_EXTERNAL_STORAGE) +ContextCompat.checkSelfPermission(context,CAMERA) + ContextCompat
                    .checkSelfPermission(context,READ_CONTACTS)+ContextCompat
                    .checkSelfPermission(context,CALL_PHONE)+ContextCompat
                    .checkSelfPermission(context,ACCESS_FINE_LOCATION)+ContextCompat
                    .checkSelfPermission(context,READ_SMS)== PackageManager.PERMISSION_GRANTED) {
                myMethod();

            }
               else {
               if (ActivityCompat.shouldShowRequestPermissionRationale
                        (context,READ_PHONE_STATE) ||ActivityCompat.shouldShowRequestPermissionRationale
                        (context,WRITE_EXTERNAL_STORAGE)||
                        ActivityCompat.shouldShowRequestPermissionRationale
                                (context,CAMERA) ||
                        ActivityCompat.shouldShowRequestPermissionRationale
                                (context,READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale
                        (context,CALL_PHONE) || ActivityCompat.shouldShowRequestPermissionRationale
                        (context,ACCESS_FINE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale
                        (context,READ_SMS)) {
                    Snackbar.make(findViewById(android.R.id.content),"Please Grant Permissions",Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    ActivityCompat.requestPermissions(SpalshActivity.this,new String[]{READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE,CAMERA,READ_CONTACTS,CALL_PHONE,ACCESS_FINE_LOCATION,READ_SMS},REQUEST_READ_PHONE_STATE);
                                }
                            }).show();
                } else {
                    ActivityCompat.requestPermissions(SpalshActivity.this,REQUEST_READ_PHONE_STATE);
                }
            }
            }

    }

解决方法

第一个参数是android.app.Activity类型,你不能在这个地方传递上下文所以使用这个代替上下文代码如下: –
if (ActivityCompat.shouldShowRequestPermissionRationale
                        (this,READ_PHONE_STATE) ||ActivityCompat.shouldShowRequestPermissionRationale
                        (this,WRITE_EXTERNAL_STORAGE)||
                        ActivityCompat.shouldShowRequestPermissionRationale
                                (this,CAMERA) ||
                        ActivityCompat.shouldShowRequestPermissionRationale
                                (this,READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale
                        (this,CALL_PHONE) || ActivityCompat.shouldShowRequestPermissionRationale
                        (this,ACCESS_FINE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale
                        (this,READ_SMS))
原文链接:https://www.f2er.com/android/308925.html

猜你在找的Android相关文章