Android 当设备重新启动时,如何取消选中共享首选项复选框?

Android 当设备重新启动时,如何取消选中共享首选项复选框?,android,android-layout,android-intent,Android,Android Layout,Android Intent,我的共享首选项中有一个复选框。 我只想在我的设备重新启动(或关机并通电)后取消选中它。 我该怎么做? 我曾经尝试过这样使用广播接收器: <receiver android:name="android.dunk.services.MyBroadcastReceiver" > <action android:name="android.intent.action.BOOT_COMPLETED"/> </receiver> 传递给Broadcast

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

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

传递给
BroadcastReceiver.onReceive()
上下文
不是
活动
,因此此行应该抛出一个
CastClassException
(您应该在logcat中看到):

您需要使用
Context
的方法来访问首选项。试试这个:

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

name
应该是包的名称(即:
com.myname.myapp

您忘记调用
editor.commit()。仍然不起作用尝试此
SharedReferences sp=PreferenceManager.GetDefaultSharedReferences(上下文)顺便说一句,您正在谈论
首选项活动的复选框
?是。我的类从PreferenceActivity扩展而来,并在SharedPreferenceChangeListener上实现,那么上面这一行应该可以工作。尝试过了,它不工作。应用程序似乎没有达到这段代码。这是我在日志猫中看到的唯一一件事:“无法打开日志设备“/dev/log/main”:没有这样的文件或目录”从Android 3.0开始,您的应用程序将无法完成引导广播,除非用户在安装后至少运行过一次(或者用户执行了“强制停止”)。如果您在手机上安装应用程序,然后仅启动手机(未先启动应用程序),则不会看到boot_COMPLETE事件。这就是你看到的吗?
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();
            }
}
SharedPreferences sp = ((Activity) context).getPreferences(Context.MODE_PRIVATE);
SharedPreferences sp = context.getSharedPreferences(name, Context.MODE_PRIVATE);