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
- android判断自己的程序是否是默认桌面
- Android 判断当前的界面是否是桌面的方法
- Android 判断当前的界面是否是桌面的方法
- [Android]判断当前界面是否是桌面
- Android判断当前界面是否是桌面
- android 判断是否在桌面,当前程序是否在运行
- android判断当前界面是否是桌面(主页)
- 【转】android判断当前界面是否是桌面(主页)
- Android 判断当前介面是否是在桌面
- Android判断当前界面是否是桌面(主页)
- android判断当前界面是否是桌面(主页)
- android 如何判断当前页面是否是桌面
- android 小技巧之 --- 判断当前界面是否是桌面
- Android 判断程序是否是第一次启动
- 判断自己的程序是否已经打开
- android 判断是否在桌面
- 判断当前界面是否是桌面
- 判断当前界面是否是桌面
- Go Hello World 实例
- java中 4 种取整函数
- Intent
- TensorFlow学习(一):感受一下
- 基于Postman的API自动化测试
- android判断自己的程序是否是默认桌面
- spring定时任务
- 两分钟学会在GitHub托管代码
- 【随机出现玫瑰图片的gif】
- POJ 2769 Reduced ID Numbers 数学+暴力
- Sublime Text技巧总结
- 对 u3d 项目生成的Dll进行加密
- 前端MVC变形记
- 模拟退火法【matlab】