Android 11.0 mtk 设置默认launcher app

平板上有多个launcher,第一次使用的时候会提示选择哪个launcher。
frameworks/base/core/java/com/android/internal/app/ResolverActivity.java

选择的界面是ResolverActivity,里面的addPreferredActivity就是设置默认app的。

修改方法如下:
 

[Launcher]Set default launcher

diff --git a/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java b/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java
old mode 100644
new mode 100755
index fadc15912dc..fea616e17a5
--- a/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java
+++ b/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java
@@ -100,8 +100,9 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
-
+//kte modified by <dengli>@<20210705> for <add ro.kte.laucher.package set default laucher>
+import android.os.SystemProperties;
+//kte modified by <dengli>@<20210705> for <add ro.kte.laucher.package set default laucher>
 /**
  * This activity is displayed when the system attempts to start an Intent for
  * which there is more than one matching activity, allowing the user to decide
@@ -381,6 +382,17 @@ public class ResolverActivity extends Activity implements
         boolean filterLastUsed = mSupportsAlwaysUseOption && !isVoiceInteraction()
                 && !shouldShowTabs();
         mMultiProfilePagerAdapter = createMultiProfilePagerAdapter(initialIntents, rList, filterLastUsed);
+        //kte modified by <dengli>@<20210705> for <add ro.kte.laucher.package set default laucher>
+        String launcherPackagename = SystemProperties.get("ro.kte.laucher.package");
+        String launcherActivityname = SystemProperties.get("ro.kte.laucher.activity");
+        if(launcherPackagename != null && launcherPackagename.length()>0 &&launcherActivityname != null && launcherActivityname.length()>0){
+            if(mResolvingHome){
+                setDefaultLauncher(launcherPackagename,launcherActivityname);
+                finish();
+                return;
+            }
+        }
+        //kte modified by <dengli>@<20210705> for <add ro.kte.laucher.package set default laucher>
         if (configureContentView()) {
             return;
         }
@@ -433,7 +445,36 @@ public class ResolverActivity extends Activity implements
                 intent.getAction() + ":" + intent.getType() + ":"
                         + (categories != null ? Arrays.toString(categories.toArray()) : ""));
     }
-
+    //kte modified by <dengli>@<20210705> for <add ro.kte.laucher.package set default laucher>
+    private void setDefaultLauncher(String defPackageName,String defClassName) {
+        try {
+            final PackageManager pm = getPackageManager();
+            //Log.e("deflauncher", "deflauncher : PackageName = " +defPackageName + " ClassName = " + defClassName);
+            IntentFilter filter = new IntentFilter();
+            filter.addAction("android.intent.action.MAIN");
+            filter.addCategory("android.intent.category.HOME");
+            filter.addCategory("android.intent.category.DEFAULT");
+
+            Intent intent = new Intent(Intent.ACTION_MAIN);
+            intent.addCategory(Intent.CATEGORY_HOME);
+            List<ResolveInfo> list = new ArrayList<ResolveInfo>();
+            list = pm.queryIntentActivities(intent, 0);
+            final int N = list.size();
+            ComponentName[] set = new ComponentName[N];
+            int bestMatch = 0;
+            for (int i = 0; i < N; i++) {
+                ResolveInfo r = list.get(i);
+                set[i] = new ComponentName(r.activityInfo.packageName,
+                        r.activityInfo.name);
+                if (r.match > bestMatch) bestMatch = r.match;
+            }
+            ComponentName preActivity = new ComponentName(defPackageName, defClassName);
+            pm.addPreferredActivity(filter, bestMatch, set, preActivity);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    //kte modified by <dengli>@<20210705> for <add ro.kte.laucher.package set default laucher>
     private boolean isIntentPicker() {
         return getClass().equals(ResolverActivity.class);
     }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值