Android 在sd完成加载后设备启动时运行服务
当设备启动时,我运行一个服务,该服务只是从sd卡加载一个图像,并使其成为壁纸。当设备启动时,我得到一个错误。但在sd卡完成加载后,服务会将图像设置为壁纸Android 在sd完成加载后设备启动时运行服务,android,service,load,boot,Android,Service,Load,Boot,当设备启动时,我运行一个服务,该服务只是从sd卡加载一个图像,并使其成为壁纸。当设备启动时,我得到一个错误。但在sd卡完成加载后,服务会将图像设置为壁纸 <action android:name="android.intent.action.BOOT_COMPLETED" /> 我像这样启动服务,我想问是否有办法在sd卡加载完成后启动服务。在媒体(sd卡)挂载后,有一个意图广播,操作设置为。编辑:我不知道有媒体挂载的意图,我会使用下面发布的答案 我要做的是以您拥有的方式启动服
<action android:name="android.intent.action.BOOT_COMPLETED" />
我像这样启动服务,我想问是否有办法在sd卡加载完成后启动服务。在媒体(sd卡)挂载后,有一个意图广播,操作设置为。编辑:我不知道有媒体挂载的意图,我会使用下面发布的答案
我要做的是以您拥有的方式启动服务,并在服务内部不断检查SD卡何时安装,可能每隔300毫秒或其他时间。这显示了如何检测SD卡是否已安装。您可以等待SD卡加载。一种方法是使用安卓.intent.action.MEDIA\u挂载的
另一种方法是轮询到某个最大值,如果未装入,则放弃:
String mountState = Environment.getExternalStorageState();
int tries = 15;
do {
if (!mountState.equals(Environment.MEDIA_MOUNTED)) {
Log.i(LOG_TAG, "External media present but not mounted. Waiting 15 seconds for mount...");
try {
Thread.sleep(1000); // sleep for a second
} catch (InterruptedException e) {
Log.w(LOG_TAG, "Interrupted!");
break;
}
mountState = Environment.getExternalStorageState();
} else {
Log.i(LOG_TAG, "External media mounted");
break;
}
} while (--tries > 0);
if (tries == 0) // give up
希望这能有所帮助。媒体装载操作在这里可以工作,但您必须在清单文件中为其包含一个意向过滤器,并且您还必须将接收方意向过滤器的数据方案更改为“文件”
很高兴答案很有用!如果答案解决了您的问题,您可以将其标记为已接受。
<receiver android:name="YourReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"></action>
<data android:scheme="file"/>
</intent-filter>
</receiver>