4

我正在尝试使用以下意图以编程方式启动主屏幕/启动器选择器对话框:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(Intent.createChooser(i, "Set My HomeScreen as default"));

但不幸的是,显示已安装主屏幕启动器列表的对话框在对话框底部没有“默认使用此操作”选项。下图显示了它的外观:

主屏幕

有趣的是,从上面的选择器对话框中选择了我的主屏幕后,如果我从该屏幕按下主屏幕按钮,Android 会自动显示一个类似的对话框,实际上在对话框底部默认使用此选项。这是它的外观:

主屏幕选择器

我对上面的代码有什么问题一无所知,这一定是我无法发现自己​​的一些愚蠢的错误。

如果任何人都可以提供一些启示,那将有很大的帮助。

谢谢

4

2 回答 2

3

createChooser()不会生成“此操作的默认值”复选框。如果您想要该复选框,请将意图传递给startActivityForResult()

于 2012-05-22T21:02:20.380 回答
1

这就是您在 ICS 上的操作方式:

final PackageManager packageManager = this.getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
startActivity(selector);
于 2014-06-04T15:58:34.723 回答