車の家の交換アプリの家庭用ボタンをオーバーライドします
-
30-09-2019 - |
質問
私はストックカーホームアプリの代替品に少し取り組んでおり、ホームボタンをオーバーライドする方法に完全に困惑しているため、電話がドッキングされるたびにアプリが前面に戻されます。これが車の家が働く方法であるため、方法があるに違いありません。
ホームボタンが押されたときにいつでも放送される意図がデフォルトのホーム画面アプリを起動するため、BroadcastReceiversは機能しないようです。私はそれを防ぐことができません。アプリ内からホームボタンをオーバーライドすることはできますが、ユーザーがアプリの外にいるときに機能する必要があるため、それは私にはうまくいきません。 Car Homeは、実行中にデフォルトのホーム画面アプリとして自分自身を設定するような奇妙なこともしません(ログキャットをチェックして確認しました)。
私はこれについて本当に頭を壁に打ち負かしてきました。誰かがアイデアを持っていますか、それとも少なくとも私を正しい方向に向けることができますか?
解決
まあ、何ヶ月も後に私はついにこの質問に対する答えを見つけました。重要なのは、「Android.dock_home」メタデータ要素です。
http://developer.android.com/reference/android/content/intent.html#metadata_dock_home
AndroidManifest.xmlでこれを使用することにより、ドックアプリケーションを一時的にホームアプリケーションにすることができます。これを行うには、ドックアプリアクティビティのアクティビティタグ内のAndroidManifest.xmlにこの行を追加します。
<meta-data android:name="android.dock_home" android:value="true" />
携帯電話がドッキングされている限り、値がtrueに設定されている場合、ホームボタンはドックアプリに戻ります。ロッキングを解除した後、ホームボタンは通常のホームアプリに戻ります。
他のヒント
残念ながら、ユーザーがそれを確認せずにホームボタンをオーバーライドする方法はありません。
あなたの最善の策は、aを実装することです CATEGORY_HOME
意図。これは、ユーザーが家を押したときに、標準の家やあなたの家を運営し、必要に応じてデフォルトにするオプションが提示されることを意味します。
アプリケーションが起動されたら、電話がドッキングされているかどうかを確認できます。電話がドッキングされていない場合は、標準のホーム画面を開いて、何かが表示される前にアプリを閉じることができます。
電話をドッキングするときにアプリが自動的に起動するには、マニフェストで正しいインストテントフィルターを使用する必要があります。参照する http://developer.android.com/reference/android/content/intent.html#category_car_dock 情報について。
ホームキーに取り組む方法を見つけました。アプリケーションの場合、マニフェストをとして設定します
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
現在、URアプリケーションは別のランチャーアプリケーションになりました。
ADBを使用し、パッケージマネージャーを使用してランチャーアプリケーションを無効にします
PMはcom.android.launcher2を無効にします。
これで、ホームキープレスは、Lawaysが同じスクリーンにとどまります。