0

プライバシーを最優先するアプリを作成しています。そのため、アプリに入るにはパスワードがあります。ここで問題は、ユーザーが HOME ボタンを押したときに発生します。次に、現在のタスクがバックグラウンドに移動し、Android のホーム画面が表示されます。

しかし、ユーザーが Android デバイスでアプリのアイコンをクリックすると、アプリはパスワードを要求せずに同じプライベート状態に戻ります。

アプリのアイコンが押されたときにのみ、ログイン アクティビティで常にアプリを起動したいと考えています。

私の活動のすべてに、次のコードがあります。

if ((keyCode == KeyEvent.KEYCODE_HOME)) {
            Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();                     
            return true;
        }
        return super.onKeyDown(keyCode, event);

しかし、トーストが表示されることはありません...同様に、私はしようとしました

finish();

コード内のプロセス。しかし、それは起こりません。ホームボタンの機能を制御することはできませんか、それとも何か不足していますか?

ありがとう!

4

4 に答える 4

1

それは不可能。

アプリをホーム画面にしない限り、Android のホーム ボタンをインターセプトする方法はありません。これはセキュリティ上の理由によるもので、終了できるすべてのボタンを無効にして、悪意のあるアプリがデバイスを乗っ取ることができないようにします。

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

しかし、私はあなたのデザインを再考することをお勧めします. ログアウトのオプションはユーザーに任せます。

http://developer.android.com/training/design-navigation/index.html

Gmailアプリを見てください。ホームボタンを押してもログアウトしません。

@Override 
protected void onUserLeaveHint()  
{ 
        super.onUserLeaveHint();
        Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();
        Log.i("Home button Pressed!", "Yes");
        finish(); 
 }

使用できますonUserLeaveHint

protected void onUserLeaveHint ()

API レベル 3 で追加

ユーザーの選択の結果、アクティビティがバックグラウンドに移行しようとしているときに、アクティビティ ライフサイクルの一部として呼び出されます。たとえば、ユーザーがホーム キーを押すと onUserLeaveHint() が呼び出されますが、電話の着信によって通話中のアクティビティが自動的に前面に表示されると、中断されたアクティビティで onUserLeaveHint() は呼び出されません。 . 呼び出される場合、このメソッドはアクティビティの onPause() コールバックの直前に呼び出されます。

このコールバックと onUserInteraction() は、アクティビティがステータス バーの通知をインテリジェントに管理できるようにすることを目的としています。具体的には、活動が通知をキャンセルする適切な時期を決定するのを支援するためです。

于 2013-07-15T11:17:01.853 に答える
0

すべてのインテントで、次のようなフラグを追加できます

intent.addFlag(Intent.FLAG_NO_HISTORY);

バックグラウンドに移動すると、ページが終了します。

于 2013-07-15T11:22:05.380 に答える
0

ホーム ボタンは、アプリケーションからコントロールを取得し、ユーザーをホーム画面に移動します。さらに、表示されているトーストは、アプリケーションのコンテキストに属します。したがって、制御することはできません。

于 2013-07-15T11:23:33.577 に答える