Commit 841318b4613ea8766292b51895b3ef5e356f2935

Authored by 朱显松
1 parent ecf81cbe

1.Android 13 存储权限适配

app/src/main/AndroidManifest.xml
@@ -4,7 +4,12 @@ @@ -4,7 +4,12 @@
4 package="com.cnlive.strike.debug"> 4 package="com.cnlive.strike.debug">
5 5
6 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 6 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
7 - <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 7 + <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
  8 + <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
  9 + <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
  10 + <uses-permission
  11 + android:name="android.permission.READ_EXTERNAL_STORAGE"
  12 + android:maxSdkVersion="32" />
8 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 13 <uses-permission android:name="android.permission.RECORD_AUDIO" />
9 <uses-permission android:name="android.permission.CAMERA" /> 14 <uses-permission android:name="android.permission.CAMERA" />
10 <uses-permission android:name="android.permission.FLASHLIGHT" /> 15 <uses-permission android:name="android.permission.FLASHLIGHT" />
lib_media/src/main/AndroidManifest.xml
@@ -2,7 +2,13 @@ @@ -2,7 +2,13 @@
2 package="com.cnlive.media"> 2 package="com.cnlive.media">
3 3
4 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 4 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
5 - <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 5 + <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
  6 + <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
  7 + <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
  8 + <uses-permission
  9 + android:name="android.permission.READ_EXTERNAL_STORAGE"
  10 + android:maxSdkVersion="32" />
  11 +
6 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 12 <uses-permission android:name="android.permission.RECORD_AUDIO" />
7 <uses-permission android:name="android.permission.CAMERA" /> 13 <uses-permission android:name="android.permission.CAMERA" />
8 <uses-permission android:name="android.permission.FLASHLIGHT" /> 14 <uses-permission android:name="android.permission.FLASHLIGHT" />
lib_media/src/main/java/com/cnlive/media/ui/activity/MediaActivity.java
@@ -3,6 +3,7 @@ package com.cnlive.media.ui.activity; @@ -3,6 +3,7 @@ package com.cnlive.media.ui.activity;
3 import android.Manifest; 3 import android.Manifest;
4 import android.app.Dialog; 4 import android.app.Dialog;
5 import android.content.Intent; 5 import android.content.Intent;
  6 +import android.os.Build;
6 import android.os.Bundle; 7 import android.os.Bundle;
7 import android.util.Log; 8 import android.util.Log;
8 import android.view.View; 9 import android.view.View;
@@ -125,11 +126,29 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter, @@ -125,11 +126,29 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter,
125 //是否没有申请权限 126 //是否没有申请权限
126 public boolean isNeverAsk; 127 public boolean isNeverAsk;
127 //录制权限 128 //录制权限
128 - public static String[] permissionsRecord = {  
129 - Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; 129 + public static String[] permissionsRecord = Build.VERSION.SDK_INT >= 33 ?
  130 + new String[]{
  131 + Manifest.permission.CAMERA,
  132 + Manifest.permission.RECORD_AUDIO,
  133 + "android.permission.READ_MEDIA_IMAGES",
  134 + "android.permission.READ_MEDIA_AUDIO",
  135 + "android.permission.READ_MEDIA_VIDEO",
  136 + Manifest.permission.WRITE_EXTERNAL_STORAGE} :
  137 + new String[]{
  138 + Manifest.permission.CAMERA,
  139 + Manifest.permission.RECORD_AUDIO,
  140 + Manifest.permission.READ_EXTERNAL_STORAGE,
  141 + Manifest.permission.WRITE_EXTERNAL_STORAGE};
130 // 存读取权限 142 // 存读取权限
131 - public static String[] permissionsRead = {  
132 - Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; 143 + public static String[] permissionsRead = Build.VERSION.SDK_INT >= 33 ?
  144 + new String[]{
  145 + "android.permission.READ_MEDIA_IMAGES",
  146 + "android.permission.READ_MEDIA_AUDIO",
  147 + "android.permission.READ_MEDIA_VIDEO",
  148 + Manifest.permission.WRITE_EXTERNAL_STORAGE} :
  149 + new String[]{
  150 + Manifest.permission.READ_EXTERNAL_STORAGE,
  151 + Manifest.permission.WRITE_EXTERNAL_STORAGE};
133 private Media cropPath; 152 private Media cropPath;
134 153
135 154
lib_media/src/main/java/com/cnlive/media/ui/activity/RecordActivity.java
@@ -6,6 +6,7 @@ import android.content.Context; @@ -6,6 +6,7 @@ import android.content.Context;
6 import android.content.Intent; 6 import android.content.Intent;
7 import android.graphics.Bitmap; 7 import android.graphics.Bitmap;
8 import android.graphics.Color; 8 import android.graphics.Color;
  9 +import android.os.Build;
9 import android.os.Bundle; 10 import android.os.Bundle;
10 import android.view.WindowManager; 11 import android.view.WindowManager;
11 12
@@ -57,8 +58,32 @@ public class RecordActivity extends MvpBindingActivity&lt;RecordView, RecordPresent @@ -57,8 +58,32 @@ public class RecordActivity extends MvpBindingActivity&lt;RecordView, RecordPresent
57 public ArrayList<Media> selectMedia; 58 public ArrayList<Media> selectMedia;
58 // 是否需要录音权限 59 // 是否需要录音权限
59 public boolean isNeedAudio = true; 60 public boolean isNeedAudio = true;
60 - public static String[] permissionsRecord = {Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};  
61 - public static String[] permissionsRecordNoAudio = {Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; 61 + public static String[] permissionsRecord = Build.VERSION.SDK_INT >= 33 ?
  62 + new String[]{
  63 + Manifest.permission.CAMERA,
  64 + Manifest.permission.RECORD_AUDIO,
  65 + "android.permission.READ_MEDIA_IMAGES",
  66 + "android.permission.READ_MEDIA_AUDIO",
  67 + "android.permission.READ_MEDIA_VIDEO",
  68 + Manifest.permission.WRITE_EXTERNAL_STORAGE} :
  69 + new String[]{
  70 + Manifest.permission.CAMERA,
  71 + Manifest.permission.RECORD_AUDIO,
  72 + Manifest.permission.READ_EXTERNAL_STORAGE,
  73 + Manifest.permission.WRITE_EXTERNAL_STORAGE};
  74 + public static String[] permissionsRecordNoAudio = Build.VERSION.SDK_INT >= 33 ?
  75 + new String[]{
  76 + Manifest.permission.CAMERA,
  77 + Manifest.permission.RECORD_AUDIO,
  78 + "android.permission.READ_MEDIA_IMAGES",
  79 + "android.permission.READ_MEDIA_AUDIO",
  80 + "android.permission.READ_MEDIA_VIDEO",
  81 + Manifest.permission.WRITE_EXTERNAL_STORAGE} :
  82 + new String[]{
  83 + Manifest.permission.CAMERA,
  84 + Manifest.permission.RECORD_AUDIO,
  85 + Manifest.permission.READ_EXTERNAL_STORAGE,
  86 + Manifest.permission.WRITE_EXTERNAL_STORAGE};
62 87
63 public static void newInstance(Context context, ImagePickerOptions mOptions) { 88 public static void newInstance(Context context, ImagePickerOptions mOptions) {
64 Intent intent = new Intent(); 89 Intent intent = new Intent();
lib_media/src/main/java/com/cnlive/media/ui/fragment/RecordFragment.java
@@ -5,6 +5,7 @@ import android.content.Context; @@ -5,6 +5,7 @@ import android.content.Context;
5 import android.content.pm.PackageManager; 5 import android.content.pm.PackageManager;
6 import android.graphics.Bitmap; 6 import android.graphics.Bitmap;
7 import android.media.AudioManager; 7 import android.media.AudioManager;
  8 +import android.os.Build;
8 import android.os.Bundle; 9 import android.os.Bundle;
9 import android.text.TextUtils; 10 import android.text.TextUtils;
10 import android.util.Log; 11 import android.util.Log;
@@ -80,11 +81,19 @@ public class RecordFragment extends MvpBindingFragment&lt;RecordFragmentView, Recor @@ -80,11 +81,19 @@ public class RecordFragment extends MvpBindingFragment&lt;RecordFragmentView, Recor
80 81
81 boolean hasPermisson = true; 82 boolean hasPermisson = true;
82 83
83 - for (String permisson : new String[]{  
84 - Manifest.permission.CAMERA,  
85 - Manifest.permission.RECORD_AUDIO,  
86 - Manifest.permission.READ_EXTERNAL_STORAGE,  
87 - Manifest.permission.WRITE_EXTERNAL_STORAGE}) { 84 + for (String permisson : Build.VERSION.SDK_INT >= 33 ?
  85 + new String[]{
  86 + Manifest.permission.CAMERA,
  87 + Manifest.permission.RECORD_AUDIO,
  88 + "android.permission.READ_MEDIA_IMAGES",
  89 + "android.permission.READ_MEDIA_AUDIO",
  90 + "android.permission.READ_MEDIA_VIDEO",
  91 + Manifest.permission.WRITE_EXTERNAL_STORAGE} :
  92 + new String[]{
  93 + Manifest.permission.CAMERA,
  94 + Manifest.permission.RECORD_AUDIO,
  95 + Manifest.permission.READ_EXTERNAL_STORAGE,
  96 + Manifest.permission.WRITE_EXTERNAL_STORAGE}) {
88 if (ActivityCompat.checkSelfPermission(getActivity(), permisson) != PackageManager.PERMISSION_GRANTED) { 97 if (ActivityCompat.checkSelfPermission(getActivity(), permisson) != PackageManager.PERMISSION_GRANTED) {
89 hasPermisson = false; 98 hasPermisson = false;
90 break; 99 break;