首先在清单文件里添加 系统级别的弹窗权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
然后检查api>=23(小于这个级别的不需要判断)的手机是否用户开启了这个权限
如果没有开启则隐式跳转让用户开启
例如:魅族pro5会跳到 辅助功能-->无障碍-->(showName)推荐开启。然后点击开启就行了。
/**
* 悬浮窗权限
*/
private fun checkAlertWindowPermission(): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {// 是否在其它app上draw
Toast.makeText(this, "当前无悬浮窗权限,请授权", Toast.LENGTH_SHORT).show()
val intent = Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:$packageName")
)
startActivityForResult(intent, PERMISSION_CODE)
return false
}
}
return true
}
/**
* 系统属性:判断辅助功能是否开启
*/
private fun isAccessibilitySettingsOn(context: Context): Boolean {
val accessibilityEnable = Settings.Secure.getInt(context.contentResolver, Settings.Secure.ACCESSIBILITY_ENABLED)
if (accessibilityEnable == 1){
val services = Settings.Secure.getString(context.contentResolver,Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)
if (services!=null){
return services.toLowerCase().contains(context.packageName.toLowerCase())
}
}
return false
}
自定义自己的系统悬浮窗FloatView。
在TrackerService中添加悬浮窗、更新悬浮窗ui等
demo
网友评论