0

アプリケーションのホームページを含むアンドロイドのアプリケーションがあります。ハードウェアのホーム ボタンをオーバーライドして、API レベル 10 以下のアプリケーションのホームページに戻ります。

私のアプリケーションは、Android バージョン 3.0 および 4.0 で正常に動作します。問題はホームボタンを無効にすることです。ホーム画面を何らかの方法で実装する方法を含むディスカッション ( Android ICS (4.0) でホーム ボタンを無効にする ) を見つけました。@Chalaman によって提案されています。

私はまだ要点を理解していません。いくつかのコードを提供することで、私をもっと助けることができる人はいますか?

使用する場合:

<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>

マニフェスト ファイルでは、ホーム ボタンをクリックするとダイアログがポップアップします。これには、ホームの電話ページ アイコンとアプリケーション アイコンが含まれます。私たちは選択することができます。アプリケーション アイコンを選択すると、アプリケーションにとどまります。問題は、私たちも同じ活動にとどまっていることです。別のアクティビティ (アプリケーションのホームページ) に移動するにはどうすればよいですか?

API レベル 10 以下で実現できます。

@Override
    public void onAttachedToWindow() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
            this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }


    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_HOME: 
        loadStartPage();
            break; 

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

    private void loadStartPage() {
        Intent intent = new Intent(getApplicationContext(), StartActivity.class);
        intent.putExtra("user", user);
        intent.putExtra("user_id", user_id);
        intent.putExtra("server", server);
        intent.putExtra("password", password);
        main_activity.startActivity(intent);
    }

API レベル 11 以降でスタート ページを読み込むには?

4

3 に答える 3

2

答えは簡単です:やらないでください

ユーザーは、アプリが Android プラットフォーム全体で一貫していることを期待しています。ホームボタンを無効にすることを正当化できる状況は想像できません。


編集:

明確にするために言うと、ホームボタンを上書きするように見えるアプリがあります(つまり、「終了」ボタンをクリックしない限りアプリをエスケープできないカーモードアプリ)。このようなアプリは、実際には「ホーム ボタン」を明示的にオーバーライドしません。詳細については、こちらをご覧ください。

于 2012-06-08T01:08:48.363 に答える
1

Androidのホーム画面は単なるアプリです。ホームキーが押されたときに発行される、明確に定義されたブロードキャストインテントによって開始されます。

簡単に言えば、標準の Android ホーム画面アプリがリッスンするのと同じイベントをリッスンする Android アプリケーションを実装します。ユーザーがホームを押すと、チューザーが表示され、ストックのホーム画面アプリから選択できるようになります。インテント フィルタは次のようになります。

<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>

それはおそらくあなたが望むものではないことを理解しています。ただし、ホーム キーを完全にオーバーライドする方法はありません。これは意図的なもので、悪意のあるアプリがホーム画面からロックアウトするのを防ぎます。ホームボタンは、動作が保証されている「ここから出る」ボタンのようなものです。

ユーザーはホームブロードキャストを処理するデフォルトとしてアプリにフラグを立てることができますが、デフォルトをクリアするかアプリをアンインストールしない限り、それ以降はストックホーム画面にアクセスできるようにしたいため、おそらくそれは望ましくありません。

ユーザーがホームボタンにアクセスできないようにすることは、かなりやっかいなことです。それがあなたが望むものだと確信していますか?

于 2012-06-08T00:34:45.787 に答える
0

onKeydown をオーバーライドしても問題を解決できません..ホームボタンを押すと、アクティビティが onPause() を呼び出します..そのため、メソッドを onPause() の中に入れます..うまくいくと思います..

protected void onPause() {
super.onPause();
 loadStartPage();
}
private void loadStartPage() {
    Intent intent = new Intent(getApplicationContext(), StartActivity.class);
    intent.putExtra("user", user);
    intent.putExtra("user_id", user_id);
    intent.putExtra("server", server);
    intent.putExtra("password", password);
    main_activity.startActivity(intent);
}
于 2013-05-22T13:04:59.570 に答える