我有一个在 AndroidManifest 中包含以下行的应用程序:
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
我的问题是:是否可以通过编程方式设置这些选项?我的意思是,一些用户将能够启用或禁用上述选项。
这样做的目的是让我的应用程序保持为启动器。
那么,是否可以对此设置条件,以便我可以根据用户进行设置?
版本:我编辑了这个问题以添加 Rawr 的建议。
在调用我的主要 Activity 之前,这是我正在做的事情:
Intent myIntent = new Intent(v.getContext(), MainActivity.class);
myIntent.addCategory(Intent.CATEGORY_HOME);
myIntent.addCategory(Intent.CATEGORY_DEFAULT);
myIntent.addCategory(Intent.CATEGORY_MONKEY);
startActivity(myIntent);
如果我在我的 list 中使用这些命令,它们就会起作用。按主页按钮不能离开我的应用程序。像上面那样手动添加类别不起作用。
有什么建议吗?
提前致谢!
最佳答案
当您创建一个intent
时,您可以使用addCategory
为该intent 指定类别。根据android docs ,在解决此 Intent 时,将仅使用提供所有指定类别的 Activity 。因此,例如,如果您这样做了
Intent i = new Intent();
i.addCategory(Intent.CATEGORY_HOME);
i.addCategory(Intent.CATEGORY_DEFAULT);
您可以将主页和默认类别以及您希望的任何其他自定义类别添加到您的 Intent 中。你从那里做什么取决于你。我不知道 Intent 的目的是什么,所以我将保留它。
至于您评论中提供的行为,我认为这与对 Intent 过滤器的需求有关。除非您仍然包含过滤器以响应该类别,否则设置 Intent 的类别不会有多大作用。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在您的 list 中设置一个 Intent 过滤器将有效地监听您以编程方式设置的类别。这就是为什么您仍然需要 list 中相应的类别标签来捕捉 Intent 的原因。
关于android - 以编程方式设置 Intent 类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16446615/