9

アイスクリームサンドイッチとジェリービーンズのホームボタンを無効にしたいロック画面を開発しています。Android2.2、2.3で次の方法を使用してブロックできます。

  @Override
public void onAttachedToWindow() {
    // TODO Auto-generate method stub
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();
}

これも試してみました

   getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

onPauseここでも、メソッドまたはを介してイベント情報を取得していませんonKeyDown

しかし、これらの方法はICSでは機能しません。ジェリービーンズを置き換えることができる方法がある場合は、私に知らせてください

4

3 に答える 3

14

ICS以降、つまりAndroid 4以降では、セキュリティ上の理由からHomeButtonのオーバーライドが削除され、アプリケーションがマルウェアであることが判明した場合にユーザーが終了できるようになりました。

さらに、ユーザーがアプリケーションから離れないようにすることは、あまり良い習慣ではありません。ただし、ロック画面アプリケーションを作成しているため、アクティビティをランチャーとして宣言することで、HomeButtonを押すと、アプリケーションが再起動してそのまま残ります(ユーザーはわずかなちらつきにしか気付かないでしょう)。画面内)。

編集#1:これはあなたのニーズにより適した別の回避策です。

編集#2:ちょうどこれに出くわした。それをテストしていません。しかし、ちょっと有望に見えます。それがうまくいくかどうかはわかりませんが、試してみることができます。

于 2012-09-24T16:03:02.170 に答える
9

試すことができることがいくつかあります。

  • アクティビティをシングルトップに設定し、メソッドが呼び出されたときにクリアからトップへのフラグで最初からやり直すことができます。onPause()これにより、ホームボタンがブロックされ、他のアクティビティが開きます。

  • BOOT_COMPLETEDブロードキャストを聞いてアクティビティを開始します。これにより、デバイスを再起動するためにデバイスからバッテリーを取り出すユーザーから保護されます。

  • アプリが稼働しているかどうかを毎秒テストするAlarmmanagerを追加し、稼働していない場合は起動します-これにより、アプリをなんとか閉じたユーザーから保護されます(外部ツールを使用している可能性があります)。

これを行うと、もアプリを終了できなくなります。

于 2012-09-27T14:46:55.427 に答える
1

Androidアプリ内からHOMEボタンを検出したり、傍受したりすることは不可能だと思います。これは、終了できない悪意のあるアプリを防ぐためにシステムに組み込まれています。

于 2013-12-30T13:44:53.293 に答える