android - 允许来自清单的 Android 11 的 WRITE_SETTINGS 权限
问题描述
我有一个用于“锁定的 Android 手机”的应用程序,这意味着该应用程序是用户可以在该手机上访问的唯一应用程序,并且使用 MySync 完成。
在应用程序必须支持 Android 11(complieSdkVersion 30)之前,用户能够从应用程序更改屏幕亮度和其他系统设置(因为用户无权访问设置应用程序)。但是现在WRITE_SETTINGS
andCHANGE_CONFIGURATION
已被弃用,不再具有理想的效果。
我知道可以通过以下提示提示用户接受设置:
boolean permission;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
permission = Settings.System.canWrite(context);
} else {
permission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_SETTINGS) == PackageManager.PERMISSION_GRANTED;
}
if (permission) {
initApp();
} else {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + context.getPackageName()));
startActivityForResult(intent, SettingsActivity.CODE_WRITE_SETTINGS_PERMISSION);
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_SETTINGS}, SettingsActivity.CODE_WRITE_SETTINGS_PERMISSION);
}
}
但由于用户无权访问我的应用生态系统中的设置应用程序,因此我无法向用户提供打开设置并允许用户留在设置中的提示。
有没有办法绕过这个权限请求,有没有办法在清单级别或其他方式上做到这一点?
解决方案
AndroidManifest 文件:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
删除这一行: android:requestLegacyExternalStorage="true"
在AndroidManifest file.
我希望,这将为您提供预期的解决方案。
推荐阅读
- node.js - 创建模型后是否可以创建一个新的钩子?
- sqlite - 创建不允许不在另一列中的值的触发器
- r - R plm vs fixst 包 - 不同的结果?
- c# - 用 C# 编写的 ASP.NET MVC 5 Web 应用程序中的视频通话开发
- docker - 如何使用 Dockerfile 在一层中复制或添加多个文件和目录
- html - 如何在jQuery中使右侧边栏变粘?
- excel - 使用用户表单导出某些工作表
- ruby-on-rails - 存储凭据中未记住用户配置(J-Toker + Devise-Token-Auth)
- sql - Rails:将复杂的 SQL 查询转换为 Arel 或 ActiveRecord
- excel - 是否有类似于可与数组一起使用的 With 语句的东西?