0

共有設定にチェックボックスがあります。デバイスを再起動した後 (またはシャットダウンして電源を入れた後) にのみチェックを外したいです。どうやってやるの ?次のように Broadcast Receiver を使用しようとしました。

<receiver android:name="android.dunk.services.MyBroadcastReceiver" >
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
</receiver>

そしてこれを追加しました:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

マニフェスト タグ内。

そして、私の放送受信機では:

public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if(action != null)
            {
                SharedPreferences sp = ((Activity) context).getPreferences(Context.MODE_PRIVATE);               
                SharedPreferences.Editor editor = sp.edit();
                editor.putBoolean("myCheckBox", false);
                        editor.commit();
            }
}
4

1 に答える 1

0

Context渡されるBroadcastReceiver.onReceive()は、ではないActivityため、この行はCastClassException(logcatに表示されるはずです)をスローする必要があります。

SharedPreferences sp = ((Activity) context).getPreferences(Context.MODE_PRIVATE);

のメソッドを使用しContextて設定にアクセスする必要があります。これを試して:

SharedPreferences sp = context.getSharedPreferences(name, Context.MODE_PRIVATE);

nameパッケージの名前である必要があります(例com.myname.myapp:)

于 2012-12-09T10:30:06.963 に答える