解决 油猴Tampermonkey Limited runtime host permissions might break some Tampermonkey feature

转载:http://www.chinaz.com/2019/0402/1005876.shtml

 

发生这个问题的一般都是使用谷歌浏览器Chrome,新版本更新之后就会提示这个了,解决的办法很简单,按下面步骤操作即可:
1、点开浏览器右上角的设置,在里面找到“更多工具”——“拓展程序”。
2、点开拓展程序,找到油猴Tampermonkey插件。
3、点开详细信息

QQå¾ç20190402093459.png
4、把下方的“允许访问文件网址”点上,即可解决

QQå¾ç20190402093525.jpg

<think>好的,我现在需要解决用户在使用updatePermissionFlags时遇到的权限问题。用户提到需要android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY权限,但不知道如何处理这个错误。首先,我要回忆Android权限系统的相关知识,尤其是运行时权限和系统权限的区别。 根据用户提供的引用内容,特别是引用[1]和引用[3],updatePermissionFlags方法涉及到底层的权限管理,通常由系统应用或具有特定权限的应用调用。ADJUST_RUNTIME_PERMISSIONS_POLICY是一个系统级别的权限,普通应用可能无法直接获取。因此,用户的应用可能因为没有这个权限而出现错误。 接下来,我需要考虑可能的解决方案。首先,检查应用是否需要这个权限,如果是系统应用,可能需要在清单文件中声明,并且需要签名权限。但如果是普通应用,可能无法获取,这时候可能需要寻找替代方法,比如使用默认的权限请求流程,或者检查是否有其他API可以替代updatePermissionFlags。 用户提到使用RuntimePermissions和NeedsPermission等注释,这可能涉及第三方库如PermissionsDispatcher,但这些库可能不处理系统级权限。因此,可能需要指导用户正确使用运行时权限的标准方法,而不是直接调用系统API。 另外,需要确认用户的应用是否是系统级应用,如果是,可能需要指导如何正确签名和配置。否则,可能需要调整代码逻辑,避免直接调用需要系统权限的方法。 总结可能的步骤:检查应用类型,确认权限声明,使用替代方法,或者处理系统权限的请求。同时,提醒用户系统权限的限制,避免在普通应用中使用需要系统级权限的API。</think>### 解决 `updatePermissionFlags` 要求 `ADJUST_RUNTIME_PERMISSIONS_POLICY` 权限的问题 #### 1. **问题分析** `updatePermissionFlags` 是 Android 权限管理底层接口,用于修改权限标志(如用户是否选择“不再询问”)。调用此方法需要系统级权限 `android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY`,该权限仅授予系统应用或特权应用[^1]。普通应用无法直接获取此权限,因此调用时会抛出安全异常。 --- #### 2. **解决方案** ##### 2.1 **方案一:检查应用类型** - **适用场景**:你的应用是系统应用或预装在设备中(如 OEM 定制系统)。 - **操作步骤**: 1. 在 `AndroidManifest.xml` 中声明权限: ```xml <uses-permission android:name="android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY" /> ``` 2. 使用系统签名对应用进行签名[^1]。 3. 将应用安装在系统分区(如 `/system/priv-app`)。 ##### 2.2 **方案二:使用标准权限请求流程** - **适用场景**:普通应用需动态管理运行时权限。 - **操作步骤**: 1. 使用官方 `ActivityResultContracts.RequestPermission` 请求权限: ```kotlin val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted -> if (isGranted) { // 权限已授予 } else { // 处理拒绝逻辑 } } requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) ``` 2. 若用户拒绝并选择“不再询问”,可通过 `shouldShowRequestPermissionRationale()` 检测并引导用户手动开启[^2]。 ##### 2.3 **方案三:替代 `updatePermissionFlags` 的方法** - **适用场景**:需要重置权限标志(如测试环境)。 - **操作步骤**: 1. 通过 `adb` 命令手动修改权限标志: ```bash adb shell pm reset-permission-flags <package_name> <permission_name> [flags] ``` 2. 在代码中调用 `PackageManager.resetRuntimePermissions()`(需系统权限)。 --- #### 3. **注意事项** - **系统权限限制**:非系统应用无法绕过 `ADJUST_RUNTIME_PERMISSIONS_POLICY` 限制,强行调用会导致崩溃。 - **合理设计权限逻辑**:遵循最小权限原则,仅在必要时请求权限,并通过 `OnShowRationale` 和 `OnNeverAskAgain` 优化用户体验[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值