我在设备启动时运行服务,该服务只是从SD卡加载图像并使其成为壁纸。当设备启动时出现错误。但SD卡完成加载后,服务将图像设置为壁纸。设备启动后在设备启动后运行一项服务完成加载后
<action android:name="android.intent.action.BOOT_COMPLETED" />
我开始这样的服务^,我想问一下在SD卡完成加载后是否有办法启动服务。
我在设备启动时运行服务,该服务只是从SD卡加载图像并使其成为壁纸。当设备启动时出现错误。但SD卡完成加载后,服务将图像设置为壁纸。设备启动后在设备启动后运行一项服务完成加载后
<action android:name="android.intent.action.BOOT_COMPLETED" />
我开始这样的服务^,我想问一下在SD卡完成加载后是否有办法启动服务。
您可以等待SD卡加载。一种方法是使用android.intent.action.MEDIA_MOUNTED
action。
另一种方式是民调中一些最大和放弃,如果不安装:
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
希望这有助于。
有媒体(SD卡)后,安装与设置为MEDIA_MOUNTED动作的意图广播。
编辑:我不知道有用于MEDIA_MOUNTED一个目的,我会用下面贴,而不是答案。
我会做的是推出你怎么把它与业务内继续检查时看到的SD卡安装,可能每300毫秒或东西的服务。这question显示如何检测SD卡是否已安装。
MEDIA_MOUNTED操作将在此处起作用,但您必须在清单文件中包含它的意图过滤器,并且还必须将接收方意向过滤器的数据方案也更改为“文件”。
<receiver android:name="YourReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"></action>
<data android:scheme="file"/>
</intent-filter>
</receiver>
感谢这个伟大的工作! –
很高兴答案很有帮助!如果解决了您的问题,您可以将答案标记为已接受。 – kabuko