From 58a3f502da26ae6f2049ed29d8cf31e19bb88c5c Mon Sep 17 00:00:00 2001 From: lijia Date: Fri, 20 Dec 2024 08:32:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?76=E7=89=88=20=E6=89=93=E5=BC=80=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=AE=BE=E7=BD=AE=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../dahe/mylibrary/utils/PermissionUtils.java | 112 ++++++++++++++++++ 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java diff --git a/app/build.gradle b/app/build.gradle index 7856802..f295edd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,8 +38,8 @@ android { applicationId "com.arpa.hndahesudintocctmsdriver" minSdkVersion 24 targetSdkVersion 30 - versionCode 75 - versionName "3.4.5" + versionCode 76 + versionName "3.4.6" flavorDimensions "CHANNEL_VALUE" flavorDimensions "app_icon" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java new file mode 100644 index 0000000..68eb34a --- /dev/null +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java @@ -0,0 +1,112 @@ +package com.dahe.mylibrary.utils; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.provider.Settings; + +/** + * @ClassName PermissionUtils + * @Author john + * @Date 2024/12/19 14:59 + * @Description TODO + */ +public class PermissionUtils { + + // 私有静态实例,防止被外部实例化 + private static PermissionUtils instance; + + // 私有构造方法,防止通过 new 关键字创建实例 + private PermissionUtils() { + } + + // 获取单例实例 + public static PermissionUtils getInstance() { + if (instance == null) { + synchronized (PermissionUtils.class) { + if (instance == null) { + instance = new PermissionUtils(); + } + } + } + return instance; + } + + /** + * 根据不同手机机型跳转到权限设置页面 + * + * @param context 上下文 + */ + public void goToAppPermissionSettings(Context context) { + Intent intent = new Intent(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (Build.FINGERPRINT.startsWith("Huawei") || Build.BRAND.startsWith("Huawei")) { + // 华为手机 + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + } else if (Build.FINGERPRINT.startsWith("Xiaomi") || Build.BRAND.startsWith("Xiaomi")) { + // 小米手机 + intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); + Uri uri = Uri.parse("package:" + context.getPackageName()); + intent.setData(uri); + } else if (Build.BRAND.equals("Meizu")) { + // 魅族手机 + intent.setAction("com.meizu.safe.security.SHOW_APPSEC"); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.putExtra("packageName", context.getPackageName()); + } else if (Build.FINGERPRINT.startsWith("OPPO") || Build.BRAND.startsWith("OPPO")) { + // OPPO手机 + try { + String pkgName = context.getPackageName(); + String className = "com.coloros.safecenter.permission.PermissionManagerActivity"; + intent.setClassName("com.coloros.safecenter", className); + intent.putExtra("packageName", pkgName); + intent.putExtra("appName", context.getResources().getString(context.getApplicationInfo().labelRes)); + intent.putExtra("opType", "4"); // 4 表示权限管理页面 + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + } catch (Exception e) { + // 如果找不到OPPO的特定页面,则使用通用页面 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + } + } else if (Build.FINGERPRINT.startsWith("vivo") || Build.BRAND.startsWith("vivo")) { + // vivo手机 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); + } else if (Build.BRAND.equals("samsung")) { + // 三星手机 + try { + String pkgName = context.getPackageName(); + Intent intent2 = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS"); + intent2.addCategory(Intent.CATEGORY_DEFAULT); + intent2.setData(Uri.parse("package:" + pkgName)); + intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent2.putExtra("com.android.providers.media.EXTRA_APP_PACKAGE", pkgName); + context.startActivity(intent2); + return; // 使用三星特定的页面,不需要继续执行通用代码 + } catch (Exception e) { + // 如果三星特定页面失败,则使用通用页面 + } + } else { + // 其他手机使用通用页面 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); + } + } else { + // 低于Android 6.0(M)的版本,使用通用页面 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + } + context.startActivity(intent); + } +} \ No newline at end of file From e3b6ba4f1c41ac51c8a67cafb363c4d33592590d Mon Sep 17 00:00:00 2001 From: lijia Date: Wed, 25 Dec 2024 10:54:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AE=9E=E5=90=8D=E8=AE=A4=E8=AF=81url?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/arpa/hndahesudintocctmsdriver/H5Activity.java | 4 ++++ .../com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java | 3 +++ 2 files changed, 7 insertions(+) diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java index 44bd645..709f84e 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java @@ -232,6 +232,10 @@ public class H5Activity extends AppCompatActivity { } else { String url = intent.getStringExtra("url"); + if (TextUtils.isEmpty(url)) { + ActivityUtils.finishToActivity(MainActivity.class, false); + return; + } viewFile = intent.getBooleanExtra("view_file", false); if (url.startsWith("alipay")) { try { diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java index e8f20ff..00f897a 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java @@ -119,6 +119,9 @@ public class JTTProcess { //参数 ShippingNoteInfo 和 start 接口中的参数 ShippingNoteInfo 相 //同,这里 shippingNoteInfo 信息只需传入运单号和分单号即可 public static void send(Context con,StartOrderBean sob,String remark){ + if (sob.getData()==null){ + return; + } ShippingNoteInfo[] snis=new ShippingNoteInfo[1]; ShippingNoteInfo sni=new ShippingNoteInfo(); sni.setShippingNoteNumber(sob.getData().getShippingNoteNumber());