论坛版主
|
阅读: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); } }
|