j2e*_*nue 5 android android-picture-in-picture
这是另一个例子:
从上面的屏幕截图中我们看到用户可以在图片模式下禁用图片。您可以在模拟器 api 27 的“特殊应用程序访问”屏幕中找到它。如何检测用户是否禁用了此功能?
我尝试检查以下内容但它不起作用:
packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
Run Code Online (Sandbox Code Playgroud)
编译器指出找不到 AppOpsManager。有任何想法吗 ?
就像 AlexTa 说的那样。但我想真正编写代码来节省一些时间:
private fun hasPermission(): Boolean {
val appOps = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager
} else {
return false
}
return appOps.checkOpNoThrow(AppOpsManager.OPSTR_PICTURE_IN_PICTURE, android.os.Process.myUid(), packageName) == AppOpsManager.MODE_ALLOWED
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我可能会迟到,但这就是答案
private fun hasPermission(): Boolean {
val appOps = getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager?
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
appOps?.unsafeCheckOpNoThrow(AppOpsManager.OPSTR_PICTURE_IN_PICTURE, android.os.Process.myUid(), packageName) == AppOpsManager.MODE_ALLOWED
} else {
appOps?.checkOpNoThrow(AppOpsManager.OPSTR_PICTURE_IN_PICTURE, android.os.Process.myUid(), packageName) == AppOpsManager.MODE_ALLOWED
}
} else {
false
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1828 次 |
| 最近记录: |