阅读:7897回复:1

Android7.1设置默认Home

楼主#
更多 发布于:2020-05-18 10:00
public static void setDefaultLauncher(Context context,String pkg,String activity) {
 // edwin get default component
 String packageName = pkg;
 String className = activity;
 PackageManager mPm = context.getPackageManager();
 Log.i(TAG, "defautl packageName = " + packageName + ", default className = " + className);
 if ((packageName != null && packageName.trim().length() > 1)
&& (className != null && className.trim().length() > 0)) {
 // cleanr default launcher
 ArrayList<IntentFilter> intentList = new ArrayList<IntentFilter>();
 ArrayList<ComponentName> cnList = new ArrayList<ComponentName>();
 mPm.getPreferredActivities(intentList, cnList, null);
 IntentFilter dhIF;
 for (int i = 0; i < cnList.size(); i++) {
 dhIF = intentList.get(i);
 if (dhIF.hasAction(Intent.ACTION_MAIN) && dhIF.hasCategory(Intent.CATEGORY_HOME)) {
 mPm.clearPackagePreferredActivities(cnList.get(i).getPackageName());
 }
 }
 // clean all launcher activity
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 List<ResolveInfo> list = new ArrayList<ResolveInfo>();
 list = (List<ResolveInfo>) mPm.queryIntentActivities(intent,0);
 // get all components and the best match
 IntentFilter filter = new IntentFilter();
 filter.addAction(Intent.ACTION_MAIN);
 filter.addCategory(Intent.CATEGORY_HOME);
 filter.addCategory(Intent.CATEGORY_DEFAULT);
 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 = new ComponentName(r.activityInfo.packageName, r.activityInfo.name);
 if (r.match > bestMatch)
 bestMatch = r.match;
 }
 // set launcher
 ComponentName launcher = new ComponentName(packageName, className);
 mPm.addPreferredActivity(filter, bestMatch, set, launcher);
 }
 }
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
沙发#
发布于:2020-05-25 16:45
游客

返回顶部