もう一度始めましょう.... その優先プロパティで少し遊んでみました。
マニフェストに次のアクティビティ スニペットを持つ新しいホームスクリーン アプリを作成しました。
<activity
android:name="com.example.homescreen.HomescreenActivity"
android:launchMode="singleInstance"
android:screenOrientation="landscape" >
<intent-filter android:priority="2" >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Androids Launcher2 の <intent-filter> 部分は「priority 属性」以外は同じです。
シナリオ 1:
新しいホーム画面をホーム画面の既定のアプリとして設定しました。次に、起動後にデフォルトのホーム画面を再度設定する必要があるかどうかを確認するために、工場出荷時の状態に完全にリセットします。
UI に、Launcher2 を開始するインテントを送信する 1 つのボタンがあります。Android の Launcher2 が正常に起動した後、[ホーム] ボタン (ハードウェア キー) を押しました。または、Launcher2 のアプリ グリッドからアプリを起動し、[ホーム] ボタンを押します。
結果: 「ホーム」は効果がなく、アプリも終了せず、Launcher2 も新しいホーム画面アプリに戻りません。
シナリオ 2:
新しいホーム画面アプリで優先度属性を使用しませんが、Android が新しいホーム画面が追加/ダウンロードされたことを検出すると、最初にこのアプリをデフォルトのランチャーとして設定します。
ここで、ファイルシステムをチェックすると: /data/system/users/0/package-restrictions.xml、この xml には、新しいホーム画面アプリで満たされた次のタグがあります。
<preferred-activities>
<item name="com.example.homescreen/.HomescreenActivity" match="100000" set="2">
<set name="com.example.homescreen/.HomescreenActivity" />
<set name="com.android.launcher/com.android.launcher2.Launcher" />
<filter>
<action name="android.intent.action.MAIN" />
<cat name="android.intent.category.HOME" />
<cat name="android.intent.category.DEFAULT" />
</filter>
</item>
</preferred-activities>
以前と同じ手順を続けてファクトリー リセットを実行すると、デフォルトのホーム画面を再度設定する必要があります。しかし、そうして「ホーム」ボタンを押すと、常に新しいホーム画面アプリに戻ります。また、シナリオ 1 で、なぜ空の
<preferred-activities/>
この package-restrictions ファイルのタグ。この優先度により、そのようなエントリが自動的に追加される可能性があると思いました。
したがって、私がアーカイブしたいのは、完全にリセットして、次回はデフォルトのホーム画面アプリを選択する必要がないことです.
ホーム画面ランチャーアプリではない他のアプリについても同じことが言えます。