【问题标题】:Run a service when device starts after sd finishes loadingsd 完成加载后设备启动时运行服务
【发布时间】:2011-11-23 20:28:03
【问题描述】:

我在设备启动时运行一项服务,该服务只是从 sd 卡加载图像并将其设为墙纸。设备启动时出现错误。但是在 sd 卡完成加载后,服务会将图像设置为墙纸。

<action android:name="android.intent.action.BOOT_COMPLETED" /> 

我是这样启动服务的^ 想问问有没有办法在sd卡加载完成后启动服务。

【问题讨论】:

    标签: android service load boot


    【解决方案1】:

    安装媒体(SD 卡)后有一个意图广播,操作设置为MEDIA_MOUNTED

    【讨论】:

    • 很高兴这个答案很有帮助!如果它解决了您的问题,您可以将答案标记为已接受。
    【解决方案2】:

    您可以等待 SD 卡加载。一种方法是使用android.intent.action.MEDIA_MOUNTEDaction

    另一种方法是轮询到某个最大值,如果没有挂载则放弃:

    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
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      编辑:我不知道 MEDIA_MOUNTED 的意图,我会使用下面发布的答案。

      我要做的是启动服务,并在服务内部不断检查以查看 sdcard 何时安装,可能每 300 毫秒或其他时间。这个question 展示了如何检测 sdcard 是否已挂载。

      【讨论】:

        【解决方案4】:

        MEDIA_MOUNTED 操作将在此处起作用,但您必须在清单文件中为其添加一个意图过滤器,并且您还必须将接收者的意图过滤器的数据方案更改为“文件”。

            <receiver android:name="YourReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.MEDIA_MOUNTED"></action>
                    <data android:scheme="file"/>
                </intent-filter>
            </receiver>
        

        【讨论】:

          猜你喜欢
          • 2020-12-04
          • 2013-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多