実行時にユーザが有効または無効にできる2つの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を取り出しました。修正しました。 – JacksOnF1re