android判断自己的程序是否是默认桌面

来源:互联网 发布:nba常规赛球员数据 编辑:程序博客网 时间:2024/05/17 22:05
最近做程序,用到了辅助功能设置桌面,以下是设置进入桌面的代码。
public static void setDefaultL(Activity activity) {    Intent intent = new Intent(Intent.ACTION_MAIN);    intent.addCategory("android.intent.category.HOME");    //这里就是为了处置华为手机    try {        //华为手机        startHuaweiSettingActOfDefLauncher(activity);//开启桌面设置    } catch (Exception e1) {        try {            //华为手机            intent.setComponent(new ComponentName("com.huawei.android.internal.app", "com.huawei.android.internal.app.HwResolverActivity"));//这个类有些华为手机找不到            activity.startActivity(intent);        } catch (Exception e2) {            try {                intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$HomeSettingsActivity"));//这个类有些华为手机找不到                activity.startActivity(intent);            } catch (Exception e3) {                try {                    activity.startActivity(new Intent(Settings.ACTION_HOME_SETTINGS));                } catch (Exception e4) {                    try {                        intent.setComponent(new ComponentName("android", "com.android.internal.app.ResolverActivity"));                        activity.startActivity(intent);                    } catch (Exception e5) {                    }                }            }        }    }}/** * 设置为华为手机 */private static void startHuaweiSettingActOfDefLauncher(Activity activity) {    IntentFilter localIntentFilter = new IntentFilter();    localIntentFilter.addAction(Intent.ACTION_MAIN);//"android.intent.action.MAIN"    localIntentFilter.addCategory(Intent.CATEGORY_HOME);//"android.intent.category.HOME"    Intent localIntent3 = new Intent(localIntentFilter.getAction(0));    localIntent3.addCategory(localIntentFilter.getCategory(0));    Intent localIntent4 = new Intent();    localIntent4.setClassName("com.android.settings", "com.android.settings.Settings$PreferredSettingsActivity");    localIntent4.putExtra("preferred_app_package_name", activity.getPackageName());    localIntent4.putExtra("preferred_app_class_name", activity.getClass().getName());    localIntent4.putExtra("is_user_confirmed", true);    localIntent4.putExtra("preferred_app_intent", localIntent3);    localIntent4.putExtra("preferred_app_intent_filter", localIntentFilter);    localIntent4.putExtra("preferred_app_label", "默认桌面设置");    activity.startActivity(localIntent4);}
然后用辅助功能设置,当设置到com.android.internal.app.ResolverActivity的时候,我是这么做的:进行点击。
if (packageName.equals("android")&& className.equals("com.android.internal.app.ResolverActivity")){    AccessibityUtils.clickTextViewByText(accessibilityService,accessibilityService.getString(R.string.tyfly_launcher));    return true;}
但是这个未能真正的点击。
/** * 判断自己的应用程序是否为默认桌面 */public final boolean isDefaultHome() {    Intent intent = new Intent(Intent.ACTION_MAIN);//Intent.ACTION_VIEW    intent.addCategory("android.intent.category.HOME");    intent.addCategory("android.intent.category.DEFAULT");    PackageManager pm = getPackageManager();    ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);    boolean isDefault = getPackageName().equals(info.activityInfo.packageName);    return isDefault;}
但是我在实践中发现:当用辅助功能设置桌面的时候,分明已经设置了默认桌面,但是这个判断还是处于false状态,该怎么办呢?
策略1:设置判断多样化,如果是进入到ResolverActivity时进行标记,那么这样的话,也就在isDefaultHome()判断完之后,进行标记判断,如果进入过启动ResolverActivity,则返回true。
0 0
原创粉丝点击