尝试使用ON_BOOT_COMPLETED广播接收器设置SharedPreference

时间:2011-04-04 13:22:43

标签: android

每次重启用户设备时,设置SharedPreference都会遇到很大的困难。

我几天前发布了这个问题并收到了两个答案,这两个答案都是我的代码中的错误,我已经纠正过,但问题仍然存在。

任何帮助都会受到极大的赞赏。

这是我的代码:

MyReceiver.java

       package ***************;

    import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;

public class MyReceiver extends BroadcastReceiver {
    SharedPreferences mPrefs;

    @Override
    public void onReceive(Context context, Intent intent) {

        String TAG ="MyReceiver";
        Log.d(TAG,"Did I Run?" );

        mPrefs = context.getSharedPreferences("myAppPrefs", 0); 
        SharedPreferences.Editor edit = mPrefs.edit();

        edit.putString("status", "Masqed Crusader is OFFLINE");
         edit.commit();
      }

}

Android清单

     <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              android:versionCode="1" package="*********" android:versionName="1.8.3">
                  <application android:icon="@drawable/icon" android:label="@string/app_name">
                <activity android:name=".Main"
                          android:label="@string/app_name"
                          android:configChanges="keyboardHidden|orientation"                                 
    android:screenOrientation="portrait">
                         <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>

                <activity android:name="help"></activity>

    <receiver android:name=".MyReceiver">

                <intent-filter> 
                        <action android:name="android.intent.action.BOOT_COMPLETE"/> 

                </intent-filter> 
  </receiver>
</application>
    <uses-sdk android:minSdkVersion="4" />


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

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

</manifest> 

我的主要活动中设置了SharedPreferences。我的目标是获取ON_BOOT_COMPLETED广播以触发MyReceiver活动,该活动会重置特定的sharedPreference,但是,当我尝试此操作时,SharedPref不会被重置。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

可能听起来很愚蠢,但请尝试删除android.intent.category.DEFAULT行。这是我在其中一个正在运行的应用程序中看到的唯一区别!