以下のソースはバックキーを制御する場合のコード。
他にも検索キーやメニューキー、数字やアルファベットなどの物理キーボードもフック可能。
ただ、ホームキーだけは制御できない。
@Override public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { if (keyCode == KeyEvent.KEYCODE_BACK) { //やりたいことを書く } return false; }
@Override public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { if (keyCode == KeyEvent.KEYCODE_BACK) { //やりたいことを書く } return false; }
<activity android:label="@string/activity_name" android:name=".SearchKeyActivity"> <intent-filter> <action android:name="android.intent.action.SEARCH_LONG_PRESS" /> <category android:name="android.intent.category.DEFAULT" /> </activity>余談だけど、自分は初代XperiaとGalaxy Nexusしか使った事がないので検索キーの使い勝手が分からない。
<activity android:name=".HomeKeyActivity" android:label="@string/act_name_home_key_activity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </activity>
public void launchAndroidSettings() { Intent intent = new Intent() .setAction(android.provider.Settings.ACTION_SETTINGS) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); startActivity(intent); }※「最低限」と書いているけれど、Android4.0ではステータスバーから設定アプリを起動する事ができるので、絶対に必要という訳ではない。(3.0でもおそらく大丈夫)