0

我的共享首选项中有一个复选框。我只想在我的设备重新启动(或关闭并通电)后取消选中它。我怎样才能做到这一点 ?我试过像这样使用广播接收器:

<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 回答