【发布时间】:2011-09-18 11:34:06
【问题描述】:
我需要根据一些运行时信息在启动器中隐藏或显示我的应用程序图标。我希望仍然能够通过明确的意图运行活动,因此禁用活动不是一个好的选择(我什至不确定它是否会起作用,我还没有尝试过,但是我想会的)。那么,我可以禁用意图过滤器吗?
【问题讨论】:
标签: android intentfilter
我需要根据一些运行时信息在启动器中隐藏或显示我的应用程序图标。我希望仍然能够通过明确的意图运行活动,因此禁用活动不是一个好的选择(我什至不确定它是否会起作用,我还没有尝试过,但是我想会的)。那么,我可以禁用意图过滤器吗?
【问题讨论】:
标签: android intentfilter
您不能直接执行此操作,但您可以在 AndroidManifest.xml 中创建一个带有相关意图过滤器的 activity alias,然后使用 PackageManager#setComponentEnabledSetting() 启用或禁用别名,将您的其他意图过滤器留在Activity 的主副本,因此它们不会受到影响。
【讨论】:
new ComponentName($packageName, $packageName + "." + $aliasName),其中$packageName 是您的应用程序包(通过getActvitiy().getPackageName() 获取)。
BuildConfig.APPLICATION_ID(或在稍旧版本的插件上使用BuildConfig.PACKAGE_NAME)获取您的包名。这避免了为了得到总是相同的字符串而进行运行时调用。