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

szuzsq 发布于 2018/09/22 14:46
阅读 269
收藏 0

我项目中有个需求,只需要能打开系统设置中切换桌面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中使用

加载中
返回顶部
顶部