-1

アプリケーションでチェックボックスがオンになっているときに、ホームボタンと戻るボタンを無効にする方法が必要です。私はバージョン 4.2.2 を使用しています。これが私のコードです。動作しません。ボックスがチェックされるとアプリケーションが停止します。

public void HardButtonOnClick(View v)
{
    boolean checked1 = ((CheckBox) v).isChecked();
    if(checked1)
    {   
        SQLiteDatabase db;                      
        db = openOrCreateDatabase("Saftey.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
        db.setVersion(1);
        db.setLocale(Locale.getDefault());
        db.setLockingEnabled(true);
        ContentValues values = new ContentValues();
        values.put("hardBtn", "YES");
        db.update("Setting", values, "id = ?", new String[] { "1" });
        Toast.makeText(this, "Hard Button Locked", Toast.LENGTH_LONG).show();
        //SharedPreferences pref = getSharedPreferences("pref",0);
        //SharedPreferences.Editor edit = pref.edit();
        //edit.putString("hard","yes");
        //edit.commit();
        /* String Lock="yes" ;
         Bundle bundle = new Bundle();
         bundle.putString("key", Lock);
         Intent a = new Intent(Change_setting.this, ChildMode.class);
         a.putExtras(bundle);
         startActivity(a);*/
        super.onAttachedToWindow();
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        isLock = true;
    }
    else
    {
        SQLiteDatabase db;                      
        db = openOrCreateDatabase("Saftey.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
        db.setVersion(1);
        db.setLocale(Locale.getDefault());
        db.setLockingEnabled(true);
        ContentValues values = new ContentValues();
        values.put("hardBtn", "NO");
        db.update("Setting", values, "id = ?", new String[] { "1" });
        //SharedPreferences pref = getSharedPreferences("pref",0);
        //SharedPreferences.Editor edit = pref.edit();
        //edit.putString("hard","no");
        //edit.commit();
        Toast.makeText(this, "Hard Button Un-Locked", Toast.LENGTH_LONG).show();
        isLock = false;
    }
}

どうすればこれを機能させることができますか?ボタンを非表示にしたくありません。チェックボックスがオンになっているときにクリックに反応しないようにしたいだけです。

4

4 に答える 4

3

戻るキーonBackPressed() をオーバーライドして何もしないようにすることはできますが、ホーム ボタンをオーバーライドすることはできませんが、onStop()ホーム キーを押したときに呼び出されるコードを追加することはできます。

ここにバックプレスを制御するコードがあります

@Override
public void onBackPressed()
{
    if ( checked1 ) // if checked do nothing , remeber tomove checked1 to be a class member
        return;
    super.onBackPressed();
}
于 2013-10-31T09:42:00.507 に答える
1

アプリケーションでホームボタンを無効にすることはできませんが、オーバーライド onBackPressed() で戻るボタンを無効にして、何もしないことはできます

于 2013-10-31T09:44:23.150 に答える
1
@Override
public void onBackPressed() {
}

これで、戻るボタンをオーバーライドします。その中で何もしないでください。

これは、押し戻したときに何か特別なことをする場合に使用できます。

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    int vfBackId = viewFlipper.getDisplayedChild();

    if ((keyCode == KeyEvent.KEYCODE_BACK)) {

    // Do some stuff    

    }
    return false;
}

ただし、ホームボタンをオーバーライドすることはできません。ホームボタンを処理するために Android システムから提供されるものではありません。

于 2013-10-31T09:44:20.697 に答える
1

ホームボタンを無効にすることはできません。

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

ホームボタンは、ホーム画面に移動する簡単な方法の 1 つです。

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

特定の Android デバイスでホーム ボタンを無効にできない

//バックキーイベント検出

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    // Quit if back is pressed     
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
于 2013-10-31T09:45:39.367 に答える