android - 以编程方式设置 Intent 类别

标签 android android-intent

我有一个在 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/

相关文章:

android - Flutter 范围错误 : Invalid value: . ...,包括:-1

android - 如何自定义示例软键盘布局以适合平板电脑

java - 当用户得到正确答案时递增变量

android - 如何取消处于运行状态的AsyncTask。

android - 从代码启动 android 应用程序

android - 在android中保存 Intent 数据

android - 从 BroadcastReceiver 关闭正在运行的应用程序

android - 根据通知恢复后台 Activity

android - 视频无法在某些 Android 设备上播放

android - 膨胀类 com.google.android.material.textfield.TextInputLayout 时出错