From 8a7616c7cc683169e4603f302e7b1c5734706b9c Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Mon, 21 Apr 2025 15:04:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=89=E8=A3=85xapk?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 5 + .../mir4updater/activity/InstallActivity.java | 67 ++++++++++ .../activity/main/MainActivity.java | 114 +++++++++++++----- .../receiver/InstallResultReceiver.java | 1 + .../mir4updater/utils/PermissionUtils.java | 6 + .../example/mir4updater/utils/XapkUtils.java | 26 ++-- app/src/main/res/layout/activity_install.xml | 9 ++ app/src/main/res/xml/file_paths.xml | 4 + 9 files changed, 191 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/com/example/mir4updater/activity/InstallActivity.java create mode 100644 app/src/main/res/layout/activity_install.xml diff --git a/app/build.gradle b/app/build.gradle index 799e076..88e6d91 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -176,4 +176,5 @@ dependencies { implementation 'com.github.getActivity:Toaster:12.6' //沉浸状态栏 implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' + implementation 'com.github.andywu91:XAPKInstaller:1.0.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 528287b..7bb2ab8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,7 @@ + + Build.VERSION_CODES.Q){ + XXPermissions.with(this) + // 申请单个权限 + .permission(PermissionUtils.Location_Permission) + // 申请多个权限 // .permission(Permission.Group.STORAGE) - // 设置权限请求拦截器(局部设置) - //.interceptor(new PermissionInterceptor()) - // 设置不触发错误检测机制(局部设置) - //.unchecked() - .request(new OnPermissionCallback() { - @Override - public void onGranted(@NonNull List permissions, boolean allGranted) { - Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); - if (!allGranted) { + // 设置权限请求拦截器(局部设置) + //.interceptor(new PermissionInterceptor()) + // 设置不触发错误检测机制(局部设置) + //.unchecked() + .request(new OnPermissionCallback() { + @Override + public void onGranted(@NonNull List permissions, boolean allGranted) { + Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); + if (!allGranted) { // Toaster.show("获取部分权限成功,但部分权限未正常授予"); - return; - } - Log.e(TAG, "onGranted: 获取权限成功"); + return; + } + Log.e(TAG, "onGranted: 获取权限成功"); // getFile(); // getPermssions(); // requestDirectoryAccess(); - } - - @Override - public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { - Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); - if (doNotAskAgain) { - Toaster.show("被永久拒绝授权,请手动授予权限"); - // 如果是被永久拒绝就跳转到应用权限系统设置页面 - XXPermissions.startPermissionActivity(MainActivity.this, permissions); - } else { - Log.e(TAG, "onGranted: 获取权限失败"); } - } - }); + + @Override + public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { + Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); + if (doNotAskAgain) { + Toaster.show("被永久拒绝授权,请手动授予权限"); + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(MainActivity.this, permissions); + } else { + Log.e(TAG, "onGranted: 获取权限失败"); + } + } + }); + }else { + XXPermissions.with(this) + // 申请单个权限 + .permission(PermissionUtils.Location_Permission_old) + // 申请多个权限 +// .permission(Permission.Group.STORAGE) + // 设置权限请求拦截器(局部设置) + //.interceptor(new PermissionInterceptor()) + // 设置不触发错误检测机制(局部设置) + //.unchecked() + .request(new OnPermissionCallback() { + @Override + public void onGranted(@NonNull List permissions, boolean allGranted) { + Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); + if (!allGranted) { +// Toaster.show("获取部分权限成功,但部分权限未正常授予"); + return; + } + Log.e(TAG, "onGranted: 获取权限成功"); +// getFile(); +// getPermssions(); +// requestDirectoryAccess(); + } + + @Override + public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { + Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); + if (doNotAskAgain) { + Toaster.show("被永久拒绝授权,请手动授予权限"); + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(MainActivity.this, permissions); + } else { + Log.e(TAG, "onGranted: 获取权限失败"); + } + } + }); + } + } private void getInstallPermission() { @@ -516,8 +560,14 @@ public class MainActivity extends BaseMvvmActivity + + + \ No newline at end of file diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml index c69abbb..e48eca5 100644 --- a/app/src/main/res/xml/file_paths.xml +++ b/app/src/main/res/xml/file_paths.xml @@ -15,4 +15,8 @@ + +