5

私はロックスクリーンアプリケーションを作成し、ホームボタンを無効にする必要があるため、その電話が盗まれた場合、その電話にアクセスできません。私のロックスクリーンはフルスクリーンアクティビティです。このコードを使用してホームボタンを無効にしますが、私にいくつかのバグを与えました。コードは次のとおりです。

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }

    @Override
    public void onAttachedToWindow()
    {  
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
        super.onAttachedToWindow();  
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return false;
    }

そのコードは私に通知/ステータス領域のようないくつかのバグを与えました、私が私のディスプレイをオフにして再びオンにすると、フルスクリーンモードでの私の活動でもまだアクセスできます..バグはこのようなものです:

初めてのアプリケーション開始:(まだ問題ありません)

ここに画像の説明を入力してください

電源ボタンから画面をオフにしてから再度オンにした後: ここに画像の説明を入力してください

主な問題はロック画面にあります。通知領域にまだアクセスできる場合、ロック画面は役に立ちません。

これを解決する方法はありますか?助けてください..

エンドキーボタンを押したときにも同じ問題が発生します。

4

7 に答える 7

4

私の携帯電話では、TYPE_KEYGUARDがフルスクリーンを上書きしているようで、タイトルバーのテーマはありません。通知バーは常に存在します。これを試して:

@Override
public void onAttachedToWindow()
{  
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);     
    super.onAttachedToWindow();  
}

ビューを画面全体に拡大すると、通知領域が覆われます。通知領域はまだ(目に見えないように)クリックできる可能性がありますが、ビュー上のすべての主要なイベントをキャッチした場合、それがバーに伝播することはないと思います。

于 2011-12-24T04:06:38.957 に答える
4

これは、上記の問題の作業です。

@Override
public void onAttachedToWindow() {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    lock.disableKeyguard();
    }

android.permission.DISABLE_KEYGUARD許可を追加android:theme="@android:style/Theme.NoTitleBar.Fullscreen"してアプリケーションに与える

于 2012-10-17T13:09:57.700 に答える
2

私のサムスンポケットでは、上記のものは何もうまくいきませんでした。さらに調べてみたら、ようやくできました。

私はそれらを次のようにAndroidMainfest.xmlにフルスクリーンで配置します(Acitivityコードではありません):

<activity
    android:name=".geo.activity.LockActivity"
    android:theme = "@android:style/Theme.Black.NoTitleBar.Fullscreen" />

そして、アクティビティでkeygurad onAttachedToWindow()メソッドを使用します。

@Override
public void onAttachedToWindow() {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    lock.disableKeyguard();
}

まさに私が欲しかったもの。オフ/オンした後、HOMEボタンをブロックします。

于 2012-10-29T00:15:55.763 に答える
1

ロックスクリーンの場合次のものを使用してみませんか。

@Override
public void onAttachedToWindow() {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}

ユーザーが安全なロック画面を設定していない場合、アプリを閉じるとアプリはホーム画面に移動します。ユーザーが安全なロック画面を設定している場合は、アプリをどのように閉じても、次に標準の安全なロック画面が表示されます。ボタンを無効にする心配はないと思います。ユーザーは、アプリから保証できるよりも高いセキュリティを提供するため、とにかく標準のセキュリティ機能の使用を許可する必要があります。さらに、安全なロック解除機能のコーディングに時間を費やす必要はありません。

于 2012-12-16T02:42:45.133 に答える
1

このコードを試してください:

@Override
 public void onAttachedToWindow() {
  // TODO Auto-generated method stub
     super.onAttachedToWindow();  

     handler.postDelayed(mUpdateUiMsg, 100);

 }


 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  if(keyCode==KeyEvent.KEYCODE_BACK){
   return true;
  }
  if(keyCode==KeyEvent.KEYCODE_HOME){
   return true;
  }

  return super.onKeyDown(keyCode, event);
 }


 private Runnable mUpdateUiMsg = new Runnable() {
        public void run() {


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


         }
    };
于 2012-06-26T12:43:04.677 に答える
1

これは非常に簡単です。onAttachedToWindow()メソッドでキーガードを無効にする必要があります。

KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
于 2012-06-14T13:11:32.060 に答える
0

の動作を制御することはできませんHome Button。それはそのタスクを実行し、アプリの要件を調整する必要があります。

フルスクリーンの場合は、マニフェストファイルのアクティビティタグにこれを追加します。

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
于 2011-09-28T12:57:17.930 に答える