我在設備啓動時運行服務,該服務只是從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