質問が示唆するように、Home キー イベントをオーバーライドできないことはわかっていますが、Android 2.2のエミュレーターを調べると、 Car Homeアプリケーションが Home、end call などのほとんどのキーをオーバーライドしていることがわかります。
さて、ポイントは彼らがどのようにそれをしたかです。アプリのソースコードを覗いてみましたが、驚いたことに、利用できないか、見つけることができませんでしたが、後でそうではないと思います。
質問が示唆するように、Home キー イベントをオーバーライドできないことはわかっていますが、Android 2.2のエミュレーターを調べると、 Car Homeアプリケーションが Home、end call などのほとんどのキーをオーバーライドしていることがわかります。
さて、ポイントは彼らがどのようにそれをしたかです。アプリのソースコードを覗いてみましたが、驚いたことに、利用できないか、見つけることができませんでしたが、後でそうではないと思います。
私は同意します@Romain Guy
ホームボタンの動作をオーバーライドすることはできません。
アプリのCar Home
機能: アプリ自体がランチャーとして定義されています。自分のものをランチャーとして定義することもでき、ホーム画面が起動されようとしているときに通知されます。
これをチェックしてください:Intent.html#CATEGORY_LAUNCHER
これは、ホームボタンが押されたときにアプリ/アクティビティが通知され、その動作をオーバーライドできるという意味ではなく、システムがホーム画面を起動しようとしているときに通知されることを意味することに注意してください。どちらも別物です。このタイプの通知では、Android はすでにアプリ (現在実行中) を凍結状態に送信しており、何が起こっているのかを制御することはできません。
これは私の知る限りです。私@Romain Guy
がどこかで間違っていれば、私を修正するかもしれません。
これは Home キーをオーバーライドしません。Car Home アプリケーションはランチャーとして動作するだけで、どのアプリケーションでも実行できます。この動作は、マニフェスト ファイルで宣言されます。
4.0 では次のようになります。
AndroidManifest.xml 内
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>