Flutter应用因未经许可跳转开发者选项遭拒,如何申请系统设置权限?
解决Google Play因自动跳转开发者选项拒审的问题
核心问题分析
你的应用被拒的原因不是权限缺失,而是未经用户明确许可自动跳转系统设置违反了Google Play的政策要求。另外,跳转开发者选项页面并不需要WRITE_SETTINGS相关权限,你之前添加的权限是多余的。
解决方案步骤
- 移除不必要的权限
打开AndroidManifest.xml,删除以下两个权限声明:
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.ACTION_MANAGE_WRITE_SETTINGS" />
- 修改逻辑:先向用户提示,再由用户主动触发跳转
将原来的自动跳转逻辑,改成先通过对话框告知用户情况,等待用户确认后再跳转。示例代码如下:
首先完善跳转函数(补充launch()调用):
void openDeveloperOptionsSettings() async { AndroidIntent intent = const AndroidIntent( action: 'android.settings.APPLICATION_DEVELOPMENT_SETTINGS', ); await intent.launch(); // 补充启动intent的代码 }
然后修改检测后的处理逻辑:
bool jailbroken; try { jailbroken = await FlutterJailbreakDetection.jailbroken || await FlutterJailbreakDetection.developerMode; } on PlatformException { jailbroken = true; } if (jailbroken) { // 弹出用户确认对话框,获取用户同意后再跳转 showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text('开发者模式提示'), content: const Text('检测到您的设备开启了开发者模式,为确保应用正常运行,请前往开发者选项关闭该功能。'), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: const Text('取消'), ), TextButton( onPressed: () { Navigator.pop(context); openDeveloperOptionsSettings(); }, child: const Text('前往设置'), ), ], ); }, ); }
关键说明
- Google Play要求所有跳转系统设置的操作必须由用户主动触发,禁止应用后台自动跳转,这是你被拒的核心原因,修改后即可符合政策要求。
WRITE_SETTINGS权限用于修改系统设置项(如亮度、字体大小),仅打开开发者选项页面不需要该权限,移除后可减少权限申请的冗余。
内容的提问来源于stack exchange,提问作者Fidel AHM
相关产品推荐
相关产品推荐

