2

アンドロイドでは、戻るボタンの機能を非常に簡単にオーバーライドできましたが、私のアプリではhome button. たとえば、ユーザーがActivity Aにいて、ホーム ボタンを押すと、activity B is launched. 以下を実行しようとしましたが、失敗しました。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode == KeyEvent.KEYCODE_HOME)
    {
        startActivity(new Intent(this, ActivityB.class));

        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Nova Launcherユーザーがオンhome screenで彼がいるときpresses the home button、ランチャーはユーザーlist of home screensにジャンプ先を提供するので、それができると確信しています。同じ種類の機能が必要です。どうすればこれを達成できますか。

よろしく

4

3 に答える 3

5

これを試して:

@Override
    protected void onUserLeaveHint() {
        if (!navigating) {
            Intent intent2 = new Intent();
            intent2.setClass(ActivityA.this, ActivityB.class);
            intent2.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            forceHome(this, intent2);
        }
        super.onUserLeaveHint();
    }

public static void forceHome(Context paramContext, Intent paramIntent) {

        if (paramIntent != null) {
            ((AlarmManager) paramContext.getSystemService(ALARM)).set(1,
                    System.currentTimeMillis(),
                    PendingIntent.getActivity(paramContext, 0, paramIntent, 0));
        }

    }

Android のセキュリティ機能として、アクティビティは 5 秒後にのみ起動します。すぐに起動したい場合。独自のものを使用してくださいHome Launcher

于 2013-08-22T12:51:21.010 に答える
3

いいえ、HomeButton の機能をオーバーライドすることはできません。悪意のあるアプリがホームボタンを制御しないようにするためのセキュリティ上の理由からです。

ホームボタンを処理したい場合は、ホーム画面を補完します。

以下が役立つかどうかはわかりません。

オーバーライドできますonUserLeaveHint

protected void onUserLeaveHint ()あなたがしたい場合は、

ユーザーの選択の結果としてアクティビティがバックグラウンドに移行しようとしているときに、アクティビティ ライフサイクルの一部として呼び出される API レベル 3 で追加されました。たとえば、ユーザーがホーム キーを押すと onUserLeaveHint() が呼び出されますが、電話の着信によって通話中のアクティビティが自動的に前面に表示されると、中断されたアクティビティで onUserLeaveHint() は呼び出されません。 . 呼び出される場合、このメソッドはアクティビティの onPause() コールバックの直前に呼び出されます。このコールバックと onUserInteraction() は、アクティビティがステータス バーの通知をインテリジェントに管理できるようにすることを目的としています。具体的には、活動が通知をキャンセルする適切な時期を決定するのを支援するためです。

于 2013-08-22T12:43:09.417 に答える
2

このメソッドをオーバーライドして、コードを記述してみてください。

 @Override
 protected void onStop() 
 {
     super.onStop();
     startActivity(new Intent(this, ActivityB.class));
 }
于 2013-08-22T12:44:56.967 に答える