在Android6.0之前,如果要弹出全局悬浮窗,只需要在AndroidManifest.xml中申请如下权限即可。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
但是从Android6.0开始,不仅需要上述权限,还需要动态申请此权限,用户手动开启才行。
处理方法如下:
if (Build.VERSION.SDK_INT >= 23) { // Android6.0及以后需要动态申请权限
if (!Settings.canDrawOverlays(mContext)) {
//启动Activity让用户授权
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 1010);
} else {
// 弹出悬浮窗
}
} else {
// 弹出悬浮窗
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1010) {
if (Build.VERSION.SDK_INT >= 23) { // Android6.0及以后需要动态申请权限
if (Settings.canDrawOverlays(mContext)) {
// 弹出悬浮窗
} else {
Toast.makeText(mContext, "not granted permission!", Toast.LENGTH_SHORT);
}
}
}
}