2011-04-04 72 views
0

每当用户的设备重新启动时,设置SharedPreference时都会遇到很多困难。尝试使用ON_BOOT_COMPLETED广播接收器设置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未被重置。

我在做什么错?

+0

您的应用程序是否安装在SD卡上?如果您在onReceive方法中放置了一条日志行,那么该行是否被记录? – 2011-04-04 14:36:17

+0

@David该应用程序未安装在SD卡上。我只是在我的代码和原始帖子中添加了一条日志行...该行似乎没有记录,尽管我会承认我可能做错了什么。 – 2011-04-04 15:34:29

+0

好东西 - 我问,因为SD卡安装在BOOT_COMPLETED之后,但显然这不是问题。 – 2011-04-04 15:59:02

回答

4

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

+0

感谢您的输入,我在我的代码和原始帖子中删除了该行......不幸的是,它仍然无法正常工作。 – 2011-04-04 16:16:40

+1

顺便说一句,不应该是android.intent.action.BOOT_COMPLETED?我发现你的意图过滤器中缺少最后一个'D'! – advantej 2011-04-04 16:19:59

+0

非常感谢!我无法相信我没有早点赶上那个错字......我一直在为此工作三天,哈哈再次感谢! – 2011-04-04 16:28:59