SYSTEM_ALERT_WINDOW
首先确认app是否拥有该权限,然后再弹出UI申请权限:
public static int OVERLAY_PERMISSION_REQ_CODE = 1234;
public void someMethod() {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
}
然后在onActivityResult中检查权限
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
if (!Settings.canDrawOverlays(this)) {
// SYSTEM_ALERT_WINDOW permission not granted...
}
}
}
WRITE_SETTINGS
判断是否拥有write setting的权限的方法为:
Settings.System.canWrite()
然后打开write setting请求页面的intent为:
ACTION_MANAGE_WRITE_SETTINGS
接下来就和system_alert_window的流程一样