要在Android中实现悬浮窗权限,需要经过以下几个步骤:
AndroidManifest.xml
文件中声明悬浮窗权限:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
} else {
// 已有悬浮窗权限,执行悬浮窗相关操作
// ...
}
onActivityResult
方法,处理悬浮窗权限请求结果:@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Settings.canDrawOverlays(this)) {
// 用户已授予悬浮窗权限,执行悬浮窗相关操作
// ...
} else {
// 用户未授予悬浮窗权限,可以给出相应提示或进行其他处理
// ...
}
}
}
需要注意的是,从Android 6.0(API级别23)开始,悬浮窗权限属于危险权限,需要动态请求,并且在onActivityResult
方法中检查权限是否被授予。在Android 6.0以下的版本中,无需动态请求悬浮窗权限,只需在AndroidManifest.xml
中声明即可。