显然,在Marshmallow之前,MIUI OS已经实现了自己的Permissions系统。我目前正在测试小米Mi 4i的视频录制应用程序,该应用程序使用基于API 21 [Android 5.0.2]的MIUI,它需要录制音频权限,默认情况下,MIUI的权限管理器不会授予。
到目前为止,我设法更改权限的方法是通过单击AlertDialog中的“确定”按钮访问应用程序的“权限管理器”窗口:
isMIUI = MIUIUtils.isMIUI();
if(isMIUI)
{
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setMessage("If you intend to use the video recording feature, please enable the 'Record Audio' permission in the settings menu. You will be redirected there if you press OK.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
intent.putExtra("extra_pkgname", "com.picmix.mobile");
startActivity(intent);
}
})
.setNegativeButton("CANCEL", null)
.create();
adb.show();
}
但这对我来说还不够好。我需要检查MIUI权限管理器中是否已经检查Record Audio
权限,以便只运行一次。
如何以编程方式检查授予的权限或在MIUI权限管理器中通知的权限?
答案 0 :(得分:-1)
private boolean resourceCanBeAccessed() {
boolean response = true;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)
== PackageManager.PERMISSION_DENIED ) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECORD_AUDIO}, 1);
response = false;
}
}
return response;
}
您只需在访问资源之前调用此方法。如果授予权限,此方法将返回true。如果没有授予权限,那么它将授予权限