悬浮窗权限代码:
在manifest中需要添加申请:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
直接进行代码的申请:
private void requestAlertWindowPermission() {
try {
ToofifiLog.t(TAG, "requestAlertWindowPermission()");
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 1001);
} catch (Exception e) {
ToofifiLog.t(TAG, "requestAlertWindowPermission() failed, e=" + e.toString());
e.printStackTrace();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1001) {
if (0 == ClientConfig.checkHasCanDrawOverlaysPermission()) {
int callCode = FtsdkApiProxy.getInstance().startCanDrawOverlaysServices();
mCheckBox.setChecked(true);
showText("启动需要悬浮权限的服务:" + (callCode == 0 ? "启动成功" : "启动失败, callCode=" + callCode));
} else {
mCheckBox.setChecked(false);
showText("启动需要悬浮权限的服务:启动失败, 没权限");
}
}
}
对于在manifest文件中的权限申请需要根据api的版本判断是否添加权限申请。从API级别23开始,除非声明Manifest.permission,否则应用程序不能在其他应用程序之上绘制。SYSTEM_ALERT_WINDOW权限在其清单中,并且用户明确授予应用程序此功能。要提示用户授予此批准,应用程序必须发送带有操作action_MANAGE_OVERLAY_PERMISSION的意图,这会导致系统显示权限管理屏幕