@@ -166,13 +166,12 @@ static void checkStoragePermission(@NonNull Context context, @NonNull List<Strin
166166 }
167167
168168 if (AndroidVersion .getTargetSdkVersionCode (context ) >= AndroidVersion .ANDROID_13 &&
169- (PermissionUtils .containsPermission (requestPermissions , Permission .READ_EXTERNAL_STORAGE ) ||
170- PermissionUtils .containsPermission (requestPermissions , Permission .WRITE_EXTERNAL_STORAGE ))) {
171- // 当 targetSdkVersion >= 33 应该使用 READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO 来代替 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE
169+ PermissionUtils .containsPermission (requestPermissions , Permission .READ_EXTERNAL_STORAGE )) {
170+ // 当 targetSdkVersion >= 33 应该使用 READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO 来代替 READ_EXTERNAL_STORAGE
172171 // 因为经过测试,如果当 targetSdkVersion >= 33 申请 READ_EXTERNAL_STORAGE 或者 WRITE_EXTERNAL_STORAGE 会被系统直接拒绝,不会弹出任何授权框
173172 throw new IllegalArgumentException ("When targetSdkVersion >= 33 should use " +
174173 Permission .READ_MEDIA_IMAGES + ", " + Permission .READ_MEDIA_VIDEO + ", " + Permission .READ_MEDIA_AUDIO +
175- " instead of " + Permission .READ_EXTERNAL_STORAGE + ", " + Permission . WRITE_EXTERNAL_STORAGE );
174+ " instead of " + Permission .READ_EXTERNAL_STORAGE );
176175 }
177176
178177 // 如果申请的是 Android 13 读取照片权限,则绕过本次检查
@@ -260,23 +259,25 @@ static void checkBodySensorsPermission(@NonNull List<String> requestPermissions)
260259 * 检查定位权限
261260 */
262261 static void checkLocationPermission (@ NonNull List <String > requestPermissions ) {
263- // 为什么要注释这段代码,因为经过测试,没有官方说得那么严重,我用 Android 模拟器做测试
264- // 愣是没测出来只申请 ACCESS_FINE_LOCATION 会有什么异常,估计是 Google 将代码改回去了,但是文档忘记改了
265- // 总结出来:耳听为虚,眼见不一定为实,要自己动手实践,实践出真理,光说不练假把式
266- // if (AndroidVersion.getTargetSdkVersionCode(context) >= AndroidVersion.ANDROID_12) {
267- // if (PermissionUtils.containsPermission(requestPermissions, Permission.ACCESS_FINE_LOCATION) &&
268- // !PermissionUtils.containsPermission(requestPermissions, Permission.ACCESS_COARSE_LOCATION) ) {
269- // // 如果您的应用以 Android 12 为目标平台并且您请求 ACCESS_FINE_LOCATION 权限
270- // // 则还必须请求 ACCESS_COARSE_LOCATION 权限。您必须在单个运行时请求中包含这两项权限
271- // // 如果您尝试仅请求 ACCESS_FINE_LOCATION,则系统会忽略该请求并在 Logcat 中记录以下错误消息:
272- // // ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION
273- // // 官方适配文档:https://developer.android.google.cn/about/versions/12/approximate-location
274- // throw new IllegalArgumentException("If your app targets Android 12 or higher " +
275- // "and requests the ACCESS_FINE_LOCATION runtime permission, " +
276- // "you must also request the ACCESS_COARSE_LOCATION permission. " +
277- // "You must include both permissions in a single runtime request.");
278- // }
279- // }
262+ /*
263+ 为什么要注释这段代码,因为经过测试,没有官方说得那么严重,我用 Android 模拟器做测试
264+ 愣是没测出来只申请 ACCESS_FINE_LOCATION 会有什么异常,估计是 Google 将代码改回去了,但是文档忘记改了
265+ 总结出来:耳听为虚,眼见不一定为实,要自己动手实践,实践出真理,光说不练假把式
266+ if (AndroidVersion.getTargetSdkVersionCode(context) >= AndroidVersion.ANDROID_12) {
267+ if (PermissionUtils.containsPermission(requestPermissions, Permission.ACCESS_FINE_LOCATION) &&
268+ !PermissionUtils.containsPermission(requestPermissions, Permission.ACCESS_COARSE_LOCATION) ) {
269+ // 如果您的应用以 Android 12 为目标平台并且您请求 ACCESS_FINE_LOCATION 权限
270+ // 则还必须请求 ACCESS_COARSE_LOCATION 权限。您必须在单个运行时请求中包含这两项权限
271+ // 如果您尝试仅请求 ACCESS_FINE_LOCATION,则系统会忽略该请求并在 Logcat 中记录以下错误消息:
272+ // ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION
273+ // 官方适配文档:https://developer.android.google.cn/about/versions/12/approximate-location
274+ throw new IllegalArgumentException("If your app targets Android 12 or higher " +
275+ "and requests the ACCESS_FINE_LOCATION runtime permission, " +
276+ "you must also request the ACCESS_COARSE_LOCATION permission. " +
277+ "You must include both permissions in a single runtime request.");
278+ }
279+ }
280+ */
280281
281282 // 判断是否包含后台定位权限
282283 if (!PermissionUtils .containsPermission (requestPermissions , Permission .ACCESS_BACKGROUND_LOCATION )) {
@@ -529,7 +530,6 @@ static void checkManifestPermissions(@NonNull Context context, @NonNull List<Str
529530 PermissionUtils .equalsPermission (permission , Permission .READ_MEDIA_VIDEO ) ||
530531 PermissionUtils .equalsPermission (permission , Permission .READ_MEDIA_AUDIO )) {
531532 checkManifestPermission (permissionInfoList , Permission .READ_EXTERNAL_STORAGE , AndroidVersion .ANDROID_12_L );
532- checkManifestPermission (permissionInfoList , Permission .WRITE_EXTERNAL_STORAGE , AndroidVersion .ANDROID_12_L );
533533 continue ;
534534 }
535535
@@ -661,14 +661,10 @@ static void optimizeDeprecatedPermission(@NonNull List<String> requestPermission
661661 PermissionUtils .containsPermission (requestPermissions , Permission .READ_MEDIA_VIDEO ) ||
662662 PermissionUtils .containsPermission (requestPermissions , Permission .READ_MEDIA_AUDIO ))) {
663663
664- // 添加旧版的存储权限
664+ // 添加旧版的读取外部存储权限
665665 if (!PermissionUtils .containsPermission (requestPermissions , Permission .READ_EXTERNAL_STORAGE )) {
666666 requestPermissions .add (Permission .READ_EXTERNAL_STORAGE );
667667 }
668-
669- if (!PermissionUtils .containsPermission (requestPermissions , Permission .WRITE_EXTERNAL_STORAGE )) {
670- requestPermissions .add (Permission .WRITE_EXTERNAL_STORAGE );
671- }
672668 }
673669 }
674670
0 commit comments