我使用下面的代码来检查相机权限是处于启用状态还是禁用状态。
无论什么状态,它总是返回' 0'。不知道为什么?代码:
@TargetApi(Build.VERSION_CODES.M)
public boolean isPermissionEnabled(String permissionToCheck){
if (mActivity.checkSelfPermission(permissionToCheck) != PERMISSION_GRANTED) {
return false;
}
return true;
}
答案 0 :(得分:1)
如果条件为启用/禁用权限,则返回true或false:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED) {
Log.d("permission", "permission denied to camera - requesting it");
String[] permissions = {Manifest.permission.CAMERA};
requestPermissions(permissions, PERMISSION_REQUEST_CODE);
}
}
答案 1 :(得分:0)
正确定位方法,将permission
添加到manifest.xml
,并确保mActivity
不为空(使用this
代替我的优先级):
@TargetApi(Build.VERSION_CODES.M)
public boolean isPermissionEnabled(String permissionToCheck){
if (ActivityCompat.checkSelfPermission
(this, permissionToCheck) != PackageManager.PERMISSION_GRANTED)
{
return false;
}
return true;
}
答案 2 :(得分:0)
就我而言,这是因为我使用 getContext()
来获取上下文,但是一旦我将其更改为 getActivity()
,一切都得到了修复!
示例工作代码:
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
注意:我是在一个片段中做这一切的,所以你可能必须使用 MainActivity.this
等价物,希望它会起作用:D