Realme设备(ColorOS V12)通过Intent打开自启动权限的ComponentName咨询
解决Realme UI V3.0/ColorOS V12打开自启动权限设置的Intent组件问题
针对搭载Realme UI V3.0(基于ColorOS V12、Android 12)的Realme设备,正确打开自启动权限设置页面的Intent组件信息如下:
- 包名:
com.oplus.safe - 类名:
com.oplus.safe.permission.startup.StartupAppListActivity
错误原因说明
你之前尝试使用的com.oplus.battery/com.oplus.powermanager.fuelgaue.PowerControlActivity属于系统内部未导出组件,第三方应用没有权限直接启动,因此会触发Permission Denial错误。
完整实现代码
val intent = Intent().apply { component = ComponentName("com.oplus.safe", "com.oplus.safe.permission.startup.StartupAppListActivity") } // 先判断Intent是否可解析,避免崩溃 val canResolve = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { context.packageManager.queryIntentActivities( intent, PackageManager.ResolveInfoFlags.of(PackageManager.MATCH_DEFAULT_ONLY.toLong()) ).isNotEmpty() } else { @Suppress("DEPRECATION") context.packageManager.queryIntentActivities(intent, PackageManager.GET_META_DATA).isNotEmpty() } if (canResolve) { context.startActivity(intent) } else { // 若组件不存在,可 fallback 到应用详情页 val fallbackIntent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { data = Uri.fromParts("package", context.packageName, null) } context.startActivity(fallbackIntent) }
注意事项
- 无需额外添加
oplus.permission.OPLUS_COMPONENT_SAFE权限,启动该系统设置页面不需要特殊权限 - 保留
queryIntentActivities判断逻辑,可规避厂商版本差异导致的组件不存在问题 - 若上述组件在部分Realme机型不生效,可尝试替换为Realme专属组件:
com.realme.security/com.realme.security.permission.startup.StartupAppListActivity
内容的提问来源于stack exchange,提问作者karan
相关产品推荐
相关产品推荐

