我正在编写代码,要求在组中的
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))