0

サービスの実行中に HOME ボタンの KeyPress を防止しようとしています

protected void onPause () {
   if (isMyServiceRunning())
   {
       Intent Act2Intent = new Intent(PhysicalTheftDialog.this, PhysicalTheftDialog.class);              
       startActivity(Act2Intent);
   }
   else {

   }
}

private boolean isMyServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if ("nyp.android.project.MyService".equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

しかし、ホームボタンを押すたびにアプリケーションがクラッシュします。

4

1 に答える 1

1

セキュリティ上の理由から、Android 開発者自身がホーム ボタンの動作を変更することを許可していません。ただし、ホームボタンの押下を本当に無効にしたい場合でも、以下のコードを追加することでこれを行うことができます。

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

@Override    
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_HOME) {
        Log.i("Home Button","Clicked");
    }

    if(keyCode==KeyEvent.KEYCODE_BACK) {

        finish();
    }
    return false;
}
于 2012-08-07T04:12:50.387 に答える