Android 13及以上版本是否需申请相机运行时权限?应用上架Google Play遭拒
Android 13+ 相机权限问题解答
Android 13(API 33)及以上版本,必须申请相机运行时权限才能正常启动相机功能,无法像Android 9那样直接启动,具体说明如下:
- 权限规则变更:从Android 13开始,
android.permission.CAMERA被归类为危险权限,要求开发者必须在App运行时向用户发起权限申请,只有用户明确授权后,App才能调用相机相关API。而Android 9及更早版本,虽然也需要在Manifest中声明权限,但部分场景下未严格执行运行时申请(不过从Android 6开始就已要求动态权限,可能你的旧版本适配未严格遵循规范)。 - Google Play审核要求:如果App调用相机功能但未实现正确的权限申请流程,会因权限合规问题被拒审,这正是你当前遇到的情况。必须同时完成两步操作:
- 在
AndroidManifest.xml中声明相机权限:<uses-permission android:name="android.permission.CAMERA" /> - 在代码中实现运行时权限申请逻辑,示例(Kotlin):
// 检查相机权限是否已授权 if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // 发起权限申请 registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted -> if (isGranted) { // 权限已授权,启动相机 startCamera() } else { // 权限被拒绝,提示用户开启权限 Toast.makeText(this, "需要相机权限才能使用该功能", Toast.LENGTH_SHORT).show() } }.launch(Manifest.permission.CAMERA) } else { // 权限已授权,直接启动相机 startCamera() }
- 在
- 例外场景:如果你的App是通过Intent调用系统自带相机应用(比如拍照、录像),Android 13及以上版本不需要额外申请相机权限,系统会自动处理权限校验;但如果是自定义相机(直接调用CameraX/Camera2 API),则必须申请权限。
内容的提问来源于stack exchange,提问作者Israelmikan
相关产品推荐
相关产品推荐

