在动态壁纸中设备启动时无法访问SD卡

时间:2014-02-17 12:12:18

标签: android live-wallpaper

壁纸,我正在显示来自数据库的数据,实际上是在SDCARD中

- 首先如果我想从SD卡访问数据我已经放了一些条件

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

它工作正常,现在当我重启设备时,在我的设备启动时,我的壁纸想要访问数据库,所以它将首先检查上述条件,但它将返回 FALSE

可能会在启动ANDROID OS一段时间后安装SDCARD ...

所以任何人都可以建议我如何解决这个问题,因为我需要将大量的数据库放在SDCARD上

2 个答案:

答案 0 :(得分:0)

  

可能是在启动ANDROID OS一段时间后安装了SDCARD

是的,所以注册action.MEDIA_MOUNTED BroadcastReceiver以在安装SD卡时进行广播。

首先在AndroidManifest.xml中注册BroadcastReceiver:

  <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....
    }
}

答案 1 :(得分: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