Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在sd完成加载后设备启动时运行服务_Android_Service_Load_Boot - Fatal编程技术网

Android 在sd完成加载后设备启动时运行服务

Android 在sd完成加载后设备启动时运行服务,android,service,load,boot,Android,Service,Load,Boot,当设备启动时,我运行一个服务,该服务只是从sd卡加载一个图像,并使其成为壁纸。当设备启动时,我得到一个错误。但在sd卡完成加载后,服务会将图像设置为壁纸 <action android:name="android.intent.action.BOOT_COMPLETED" /> 我像这样启动服务,我想问是否有办法在sd卡加载完成后启动服务。在媒体(sd卡)挂载后,有一个意图广播,操作设置为。编辑:我不知道有媒体挂载的意图,我会使用下面发布的答案 我要做的是以您拥有的方式启动服

当设备启动时,我运行一个服务,该服务只是从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>