Browse Source

增加版本分区和权限管理

songw 1 week ago
parent
commit
6fb63abfa5

+ 1 - 1
app/build.gradle

@@ -74,7 +74,7 @@ android {
                     def releaseInfo = getVersionName()
 //                    def timeR = new Date().format("yyyyMMdd_HH-mm-ss")
 //                    fileName = "行之成_产线UAS_RELEASE_${releaseInfo}_${timeR}.apk"
-                    fileName = "仓库通用版_RELEASE_${releaseInfo}.apk"
+                    fileName = "仓库通用高级版_RELEASE_${releaseInfo}.apk"
                 } else if (variant.buildType.name.equals('debug')) {
                     def debugInfo = getVersionName()
                     def timeD = new Date().format("yyyyMMdd_HH-mm-ss")

+ 17 - 21
app/src/main/java/uas/erp/general_wms/fragment/VersionUpgradeFragment.java

@@ -5,6 +5,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Build;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.Message;
 import android.text.TextUtils;
@@ -19,7 +20,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.android.volley.Request;
 
 import java.io.File;
-import java.io.IOException;
 
 import androidx.annotation.RequiresApi;
 import androidx.core.content.FileProvider;
@@ -29,7 +29,6 @@ import uas.erp.general_wms.util.AndroidUtil;
 import uas.erp.general_wms.util.CommonUtil;
 import uas.erp.general_wms.util.Constants;
 import uas.erp.general_wms.util.FastjsonUtil;
-import uas.erp.general_wms.util.FileUtils;
 import uas.erp.general_wms.util.HttpCallback;
 import uas.erp.general_wms.util.HttpParams;
 import uas.erp.general_wms.util.VolleyRequest;
@@ -53,6 +52,8 @@ public class VersionUpgradeFragment extends BaseFragment implements ProgressResp
     private File file;
     private String mAttachId;
 
+    private File apkFile;
+
     @Override
     protected int getLayout() {
         return R.layout.fragment_version_upgrade;
@@ -80,26 +81,8 @@ public class VersionUpgradeFragment extends BaseFragment implements ProgressResp
 
                 breakPoints = 0L;
 
-                //                File directory = new File(APK_FILE_PATH);
-                String filesDir = getActivity().getFilesDir().getAbsolutePath();
-                File directory = new File(filesDir + "/general_wms/apk");
-                if (!directory.exists() && !directory.isDirectory()) {
-                    boolean mkdirs = directory.mkdirs();
-                } else {
-                    //                    FileUtils.delAllFile(APK_FILE_PATH);
-                    FileUtils.delAllFile(directory + "/general_wms/apk");
-                }
-
-                //                file = new File(APK_FILE_PATH, APK_FILE_NAME);
-                file = new File(filesDir + "/general_wms/apk", APK_FILE_NAME);
-
-                try {
-                    file.createNewFile();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
                 String downloadUrl = GloableParams.ADDRESS_COMMON_DOWNLOADBYID + "?id=" + mAttachId;
-                mDownloader = new ProgressDownloader(downloadUrl, file, VersionUpgradeFragment.this);
+                mDownloader = new ProgressDownloader(downloadUrl, apkFile, VersionUpgradeFragment.this);
                 mDownloader.download(0L);
             }
         });
@@ -109,6 +92,19 @@ public class VersionUpgradeFragment extends BaseFragment implements ProgressResp
     protected void initDatas() {
         mOldVersionTv.setText(AndroidUtil.getVersionName(mActivity));
         getNewVersionMsg();
+        //不同版本分区处理
+        File downloadDir;
+        if (Build.VERSION.SDK_INT >= 29) {
+            // Android 10+ 使用私有目录
+            downloadDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
+        } else {
+            downloadDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
+        }
+        if (!downloadDir.exists()) {
+            downloadDir.mkdirs();
+        }
+        String fileName = "update_" + System.currentTimeMillis() + ".apk";
+        apkFile = new File(downloadDir, fileName);
 
         //从API 26开始需要申请安装权限
         if (Build.VERSION.SDK_INT >= 26) {

+ 21 - 4
app/src/main/res/xml/file_paths.xml

@@ -1,10 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
-<paths xmlns:android="http://schemas.android.com/apk/res/android">
+<paths>
+    <!-- 外部存储根目录 -->
+    <external-path
+        name="external"
+        path="." />
+
+    <!-- 下载目录 -->
+    <external-path
+        name="download"
+        path="Download" />
 
-    <external-path name="ext_root" path="download"/>
+    <!-- 应用私有目录 -->
+    <external-files-path
+        name="files"
+        path="." />
 
-    <root-path
-        name="root_path"
+    <!-- 缓存目录 -->
+    <external-cache-path
+        name="cache"
         path="." />
 
+    <!-- 内部存储目录 -->
+    <files-path
+        name="internal"
+        path="." />
 </paths>