Просмотр исходного кода

修改跳转设置界面方法与测试是否有快捷方式权限

zengjiebin лет назад: 7
Родитель
Сommit
d90c480727

+ 1 - 0
app/build.gradle

@@ -489,6 +489,7 @@ dependencies {
     implementation 'com.r0adkll:slidableactivity:2.0.6'
 
     implementation project(':shortcut_lib')
+    implementation 'com.github.ly-android:PermissionUtils:1.0.3'
 }
 
 static def releaseTime() {

+ 48 - 39
app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java

@@ -26,6 +26,12 @@ import android.view.Gravity;
 import android.view.View;
 import android.widget.TextView;
 
+import com.allen.android.lib.rom.HuaweiUtils;
+import com.allen.android.lib.rom.MeizuUtils;
+import com.allen.android.lib.rom.MiuiUtils;
+import com.allen.android.lib.rom.OppoUtils;
+import com.allen.android.lib.rom.QikuUtils;
+import com.allen.android.lib.rom.RomUtils;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
 import com.kfzs.duanduan.utils.ApkUtils;
@@ -795,46 +801,37 @@ public class SysAppUtil {
     /**
      * 启动应用的设置
      */
-    public static void startAppSettings(Activity activity) {
-//        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-//        intent.setData(Uri.parse("package:" + BuildConfig.APPLICATION_ID));
-//        activity.startActivity(intent);
-        // vivo 点击设置图标>加速白名单>我的app
-        //      点击软件管理>软件管理权限>软件>我的app>信任该软件
-        Intent appIntent = activity.getPackageManager().getLaunchIntentForPackage("com.iqoo.secure");
-        if(appIntent != null){
-            activity.startActivity(appIntent);
-            return;
-        }
-
-        // oppo 点击设置图标>应用权限管理>按应用程序管理>我的app>我信任该应用
-        //      点击权限隐私>自启动管理>我的app
-        appIntent = activity.getPackageManager().getLaunchIntentForPackage("com.oppo.safe");
-        if(appIntent != null){
-            activity.startActivity(appIntent);
-            return;
-        }
-
-        Intent intent = new Intent();
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
-            intent.putExtra(Settings.EXTRA_APP_PACKAGE, activity.getPackageName());
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
-            intent.putExtra("app_package", activity.getPackageName());
-            intent.putExtra("app_uid", activity.getApplicationInfo().uid);
-        } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD){
-            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-            intent.setData(Uri.fromParts("package", activity.getPackageName(), null));
+    public static void startAppSettings(Activity activity) throws NoSuchFieldException, IllegalAccessException {
+        SheepApp context = SheepApp.getInstance();
+        if (Build.VERSION.SDK_INT < 23) {
+            if (RomUtils.checkIsMiuiRom()) {
+                MiuiUtils.applyMiuiPermission(context);
+            } else if (RomUtils.checkIsMeizuRom()) {
+                MeizuUtils.applyPermission(context);
+            } else if (RomUtils.checkIsHuaweiRom()) {
+                HuaweiUtils.applyPermission(context);
+            } else if (RomUtils.checkIs360Rom()) {
+                QikuUtils.applyPermission(context);
+            } else if (RomUtils.checkIsOppoRom()) {
+                OppoUtils.applyOppoPermission(context);
+            } else {
+                RomUtils.getAppDetailSettingIntent(context);
+            }
         } else {
-            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            intent.setAction(Intent.ACTION_VIEW);
-            intent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
-            intent.putExtra("com.android.settings.ApplicationPkgName", activity.getPackageName());
+            if (RomUtils.checkIsMeizuRom()) {
+                MeizuUtils.applyPermission(context);
+            } else {
+                if (RomUtils.checkIsOppoRom() || RomUtils.checkIsVivoRom()
+                        || RomUtils.checkIsHuaweiRom() || RomUtils.checkIsSamsunRom()) {
+                    RomUtils.getAppDetailSettingIntent(context);
+                } else if (RomUtils.checkIsMiuiRom()) {
+                    MiuiUtils.toPermisstionSetting(context);
+                } else {
+                    RomUtils.commonROMPermissionApplyInternal(context);
+                }
+            }
+        }
         }
-        activity.startActivity(intent);
-    }
 
 
 
@@ -884,7 +881,19 @@ public class SysAppUtil {
     //展示提示框
     private static void showShortcutTip(Activity activity) {
         ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("已尝试添加有范商城到桌面").setMsg("若添加失败,请前往系统设置为小绵羊打开\"创建桌面快捷方式\"的权限")
-                .setBtnLeftText("取消").setBtnRightText("前往设置").setBtnRightOnClickListener(view -> startAppSettings(activity)));
+                .setBtnLeftText("取消").setBtnRightText("前往设置").setBtnRightOnClickListener(view -> {
+                    try {
+                        startAppSettings(activity);
+                    } catch (NoSuchFieldException e) {
+                        e.printStackTrace();
+                        if(TestUtil.isDev())
+                            G.showToast(e);
+                    } catch (IllegalAccessException e) {
+                        e.printStackTrace();
+                        if(TestUtil.isDev())
+                            G.showToast(e);
+                    }
+                }));
     }
 
     class CallBackReceiver extends BroadcastReceiver {

+ 6 - 0
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -1,5 +1,6 @@
 package com.sheep.gamegroup.util;
 
+import android.Manifest;
 import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationChannel;
@@ -28,6 +29,7 @@ import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.allen.android.lib.PermissionUtils;
 import com.bumptech.glide.Glide;
 import com.kfzs.cfyl.share_library.util.CallBackAPI;
 import com.kfzs.duanduan.utils.ApkUtils;
@@ -264,6 +266,7 @@ public class TestUtil {
      */
     public static void test(final Activity activity) {
         final String[] items = {"复制token", "添加token", "复制打点数据", "从jenkins下载小绵羊安装包", "测试表情包",
+                "判断是否有快捷权限",
                 "跳转QQ", "跳转QQ群", "尝试获取通讯录", "测试有范","测试有范6.0","测试有范7.0","测试有范8.0", "测试设备信息", "下载视频测试", "爱奇艺VIP会员", "分享我的签名的小绵羊apk", "分享当前小绵羊apk",
                 "测试升级对话框", "少数民族姓名", "开启皮肤", "不开启皮肤", "我的游戏", "优惠券弹窗", "填写收件地址弹窗",
                 "朗读文字", "游戏搜索", "测试插件", "测试bitmap", "剪切视频", "我的关注", "足迹",
@@ -289,6 +292,9 @@ public class TestUtil {
             return;
         }
         switch (item) {
+            case "判断是否有快捷权限":
+                PermissionUtils.hasPermission(activity, Manifest.permission.INSTALL_SHORTCUT);
+                break;
             case "尝试获取通讯录":
                 ContactUtil.getAllContactList(G::showToast);
                 break;