论坛首页 移动开发技术论坛

Android用代码打开系统设置->桌面设置的Activity遇上问题

浏览 2275 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2018-09-22  
我项目中有个需求,只需要能打开系统设置中切换桌面launcher的界面,让用户选择就行了。不需要直接切换。
如果手动打开的话。
1).华为Android5.1.1路径:设置->应用管理->默认应用设置->桌面
2).华为Android6.0路径:   设置->应用管理->高级->默认应用设置->桌面

打开的界面如下图:



我用代码,想打开这个界面,我的代码如下:


public void startHuaweiSettingActOfDefLauncher() {
IntentFilter preferred_app_intent_filter = new IntentFilter();
preferred_app_intent_filter.addAction(Intent.ACTION_MAIN); //android.intent.action.MAIN
preferred_app_intent_filter.addCategory(Intent.CATEGORY_HOME); //android.intent.category.HOME

Intent preferred_app_intent = new Intent(Intent.ACTION_MAIN);
preferred_app_intent.addCategory(Intent.CATEGORY_HOME);

Intent intent = new Intent();
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.android.settings", "com.android.settings.Settings$PreferredSettingsActivity");
intent.putExtra("preferred_app_label", "桌面");
intent.putExtra("preferred_app_type", "PREFERRED_HOME");
intent.putExtra("preferred_app_package_name", getPackageName());
//intent.putExtra("preferred_app_class_name", MainActivity.class.getName());
//intent.putExtra("is_user_confirmed", true);
intent.putExtra("preferred_app_intent", preferred_app_intent);
intent.putExtra("preferred_app_intent_filter", preferred_app_intent_filter);
startActivity(intent);
}

问题来了,上面代码,在Android5.1.1上能打开,在Android6.0上不能打开。

我试着从手机设置那里打开这个界面(即Android5.1.1为:设置->应用管理->默认应用设置->桌面;Android6.0为:   设置->应用管理->高级->默认应用设置->桌面),以及用代码在Android5.1.1下打开这个界面。
之后在命令行下分别输入:


//Android5.1.1系统设置中打开
adb shell dumpsys activity top >android5.txt

//Android6.0系统设置中打开
adb shell dumpsys activity top >android6.txt

//Android5.1.1代码中打开
adb shell dumpsys activity top >android5_ABTest.txt


获得的文件比较大,只截取一部分(完整的文件可以从链接中下载,我看不太懂)。其中红色框出来的,应该是调用参数(即调用方式),看起来系统设置中Android5.1.1,系统设置中Android6.0,和我的代码,调用参数是一样的啊。为什么代码只能在Android5.1.1上有效呢?

全部文件在:
http://wxshaker.com/launcher_param/launcher_param.zip

//Android5.1.1系统设置中打开


//Android6.0系统设置中打开


//我的代码在Android5.1.1中使用
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics