1

CATEGORY_HOMEを使用するアプリケーションがあるので、ホームボタンを押すとアプリ内に留まります。ユーザーが私のアプリをデフォルトのホームとして選択すると、デバイス全体に設定されます。

ホームボタンを押したときにアプリを使用していないときに、アプリ内でのホーム移動を無効にするにはどうすればよいか疑問に思いました。調査を行った後、パッケージマネージャーを使用する必要があると思いますが、これを実装する方法がわかりません。

アクティビティは、マニフェストでホームとして定義されています。

<activity
        android:name=".home"
        android:label="@string/title_activity_main" >
        <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>
    </activity>

そして、これが私が家に行く方法と私がそれを設定する方法です:

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
4

1 に答える 1

2

マニフェストでカテゴリ HOME を構成するのはなぜですか? をオーバーライドすることで、ホームプレスの動作をオーバーライドできます。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_HOME)) {
        Toast.makeText(this, "Home button pressed!", Toast.LENGTH_LONG).show();                     
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

次に、アプリ内のボタンを押すときに行っていることを何でも実行します。アプリの外では、もちろん正常に動作します。

編集

確認したところ、私のデバイスでは機能しませんが、onAttachedWindow()HOME をオーバーライドして無効にするとうまくいくようです。を使用してキーを再割り当てすることを忘れないでonKeyDown()ください(この編集の上に投稿されたのと同じように)。

@Override
public void onAttachedToWindow() {  
    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();  
}
于 2012-12-03T22:49:23.273 に答える