0

ユーザーが管理者を有効にしているかどうかを理解しようとしており、後で(onResumeで)チェックボックスを更新します。

問題は、ユーザーが管理者を有効にできるアクティビティが起動され、ユーザーの決定を待たずに次のコードが起動されることです。どうすればそれをバイパスできますか?

private void doAttivaRimuoviAdmin() {
    if (isAdminAttivo()) {
        mDPM.removeActiveAdmin(mDeviceAdminSample);
    } else {
        Intent localIntent = new Intent("android.app.action.ADD_DEVICE_ADMIN");
        localIntent.putExtra("android.app.extra.DEVICE_ADMIN", mDeviceAdminSample);
        localIntent.putExtra("android.app.extra.ADD_EXPLANATION",
                getString(R.string.spiegazione_amministratore));
        startActivityForResult(localIntent, 1);

        // se non è stato dato il permesso, non attiva la checkbox
        Editor e = mPrefs.edit();

        if (isAdminAttivo()) {
            e.putBoolean("spegnischermoabilitato", true);
        } else {
            e.putBoolean("spegnischermoabilitato", false);
        }
        e.commit();
        Log.i(getString(R.string.app_name), ""+ mPrefs.getBoolean("spegnischermoabilitato", false));

    }

}

悪い言葉で言えば、共有設定「spegnischermoabilitato」には常に FALSE が含まれています。

4

1 に答える 1

0

startActivityForResult()のドキュメントから:

終了時に結果が必要なアクティビティを開始します。このアクティビティが終了すると、onActivityResult()メソッドが指定されたrequestCodeで呼び出されます。負のrequestCodeを使用することは、startActivity(Intent)を呼び出すことと同じです(アクティビティはサブアクティビティとして起動されません)。

つまり、 onActivityResult()をオーバーライドする必要があります。このメソッドでは、startActivityForResult()で設定したrequestCodeを使用してメソッドが呼び出されていること、および期待されるresultCodeが含まれていることを確認する必要があります。それがあなたの好みを書くなら。

于 2012-04-25T19:32:08.933 に答える