2014-02-17 79 views
0

壁紙在我顯示,從數據庫,這實際上是在SD卡不能在設備的起始時間訪問SD卡中livewallpaper

數據 - 所以第一,如果我想訪問SD卡從數據我已經把一些條件

 if (Environment.getExternalStorageState().equals(
       Environment.MEDIA_MOUNTED)) { 

它的正常工作,現在當我重新啓動我的設備,我的設備的開機時間,我的壁紙要訪問數據庫,所以它會首先檢查上述條件,但它會返回FALSE

可能是SD卡安裝Android操作系統開始的一段時間後...

所以有人建議我如何解決這個問題,因爲大尺寸的數據庫的,我必須把它放在SD卡

+0

在AndroidManifest中授予所有必需的讀/寫權限? – AndyFaizan

+0

我認爲這是因爲SD卡需要在重新啓動後加載。 它在SD卡上進行媒體掃描。 您可以通過將當前使用的壁紙存儲在內部存儲中來欺騙用戶。 – Pankaj

回答

0

可能是SD卡安裝ANDROID操作系統

是正確的起點的一段時間後,所以註冊的BroadcastReceiver action.MEDIA_MOUNTED當SD卡安裝拿到轉播。

首先註冊廣播接收器在AndroidManifest.xml:

<receiver 
    android:enabled="true" 
    android:exported="false" 
    android:name=".ExternalStorageInfoReceiver"> 
    <intent-filter> 
      <action android:name="android.intent.action.MEDIA_MOUNTED"/> 
    </intent-filter> 
    </receiver> 

在ExternalStorageInfoReceiver做你的工作的onReceive方法內:

public class ExternalStorageInfoReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //change wallpaper here.... 
    } 
} 
0

如果您的應用程序存儲在外置存儲,那麼你應該提供以下意圖過濾器,

<receiver android:name=".YourBroadcastReceiver"> 
     <intent-filter>     
      <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />     
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
</receiver> 

請參閱App Install Location