2011-04-04 25 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