Android:我可以通过编程方式启用/禁用活动的意图过滤器吗?

lap*_*pis 13 android intentfilter

我需要根据一些运行时信息在启动器中隐藏或显示我的应用程序图标.我仍然希望能够以明确的意图运行活动,因此禁用活动不是一个好的选择(我甚至不知道它是否会起作用,我还没有尝试过,但是我猜它会).那么,我可以禁用意图过滤器吗?

mlc*_*mlc 30

您不能直接执行此操作,但是您可以使用相关的intent过滤器在您的域中创建活动别名AndroidManifest.xml,然后启用或禁用别名PackageManager#setComponentEnabledSetting(),将其他intent过滤器保留在Activity的主副本中,这样它们就不会被影响.

  • 从[this post](http://stackoverflow.com/questions/23919329/android-how-to-create-componentname-in-code-using-activity-alias)跟进您的activity-alias的组件名称将是`new ComponentName($ packageName,$ packageName +"."+ $ aliasName)`其中$ packageName是你的app的包(通过`getActvitiy().getPackageName()`获取它). (2认同)
  • 如果您使用的是现有版本的android gradle插件,您还可以从"BuildConfig.APPLICATION_ID"获取您的包名,(或者稍微旧版本的插件上的"BuildConfig.PACKAGE_NAME").这样可以避免执行运行时调用,以便获得始终为同一个字符串的内容. (2认同)