Browse Source

优化部分手机data目录无法授权时每次进入都需要检查权限的问题

zk 1 year ago
parent
commit
d45770cbcd

+ 6 - 1
app/src/main/java/com/datarecovery/master/utils/FilePermissionHelper.java

@@ -9,6 +9,7 @@ import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleEventObserver;
 import androidx.lifecycle.LifecycleOwner;
 
+import com.atmob.common.data.KVUtils;
 import com.atmob.common.runtime.ContextUtil;
 import com.datarecovery.master.BuildConfig;
 import com.datarecovery.master.R;
@@ -30,6 +31,8 @@ import atmob.rxjava.utils.RxJavaUtil;
 
 public class FilePermissionHelper {
 
+    private static final String ANDROID_DATA_PERMISSION_SUCCESS = "android_data_permission_success";
+
     Disposable disposable;
 
     public void requestDataFilePermission(ComponentActivity activity, @MemberType String memberType, boolean isSkipLogin, NextStepCallback stepCallback) {
@@ -116,7 +119,7 @@ public class FilePermissionHelper {
                     }
                 })
                 .flatMap((Function<Integer, SingleSource<Integer>>) sdkInt -> {
-                    if (sdkInt >= Build.VERSION_CODES.TIRAMISU) {
+                    if (sdkInt >= Build.VERSION_CODES.TIRAMISU || KVUtils.getDefault().getBoolean(ANDROID_DATA_PERMISSION_SUCCESS, false)) {
                         return Single.just(sdkInt);
                     }
                     boolean dataFolder = XFilePermission.hasAndroidDataPermission(ContextUtil.getContext());
@@ -136,6 +139,8 @@ public class FilePermissionHelper {
                                                 public void onPermissionGranted() {
                                                     requestAndroidDataDialog.dismiss();
                                                     observer.onSuccess(sdkInt);
+                                                    //部分手机无法授权data目录,选择任意目录记录为通过,下次不再检查
+                                                    KVUtils.getDefault().putBoolean(ANDROID_DATA_PERMISSION_SUCCESS, true);
                                                 }
 
                                                 @Override