【发布时间】:2016-02-04 19:49:43
【问题描述】:
我已经实现了两个activity-alias,用户应该能够在运行时启用或禁用它们。
<activity-alias
android:name=".ui.alias.open_location"
android:targetActivity=".ui.activity.location"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
我不希望一开始就启用它们,以免弄乱用户设备的应用程序屏幕。但在运行时,用户应该能够启用别名。我通过PackageManager:
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName(context, ".ui.alias.open_location");
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
这在开始时就像魅力一样,但是当我安装了我的应用程序的更新时,别名再次被禁用。如何防止系统通过清单覆盖启用状态?我不希望用户一开始就使用 Launcher,也不希望用户在更新后重新创建所有别名快捷方式。
我想我需要类似于PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER 的东西,但仅适用于启用状态。
谢谢!
【问题讨论】:
-
不存在带有一个
String参数的ComponentName构造函数。你能发布你的实际代码吗?谢谢 -
是的,我取出了我的 packageName。修好了。
标签: android android-activity android-manifest android-activity-alias