我正試圖編寫一個在手機啓動時運行的服務,並且必須從SD卡上讀取數據。起初,我使用android.intent.action.BOOT_COMPLETED
的接收器,但切換到下面的意圖,以確保SD卡已被加載。Nexus 7上的廣播接收器
我的問題是,在我的Nexus 7上,它似乎沒有收到MEDIA_MOUNTED
的意圖。 Nexus 7沒有SD卡(但它有單獨的SD卡分區)。我也嘗試了BOOT_COMPLETED
意圖,運氣也一樣。我已經在模擬器和我的Thunderbolt上測試了相同的代碼,並且這兩種意圖都可以工作。
Manifiest:
<receiver
android:name=".StartupReceiver"
android:enabled="true"
android:exported="true"
android:label="Start the NFS Automounter Service">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"></action>
<data android:scheme="file"/>
<!-- <action android:name="android.intent.action.BOOT_COMPLETED"></action>-->
</intent-filter>
</receiver>
的BroadcastReceiver
類:
public class StartupReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))
//if ("android.intent.action.MEDIA_MOUNTED".equals(intent.getAction()))
//{
Log.d("NFS_Automounter", "Recieved Mount");
Intent serviceIntent = new Intent("com.ancantus.nfsautomounter.AutomountService");
context.startService(serviceIntent);
//}
}
}
我註釋掉的意圖匹配只是嘗試,如果在所有執行類日誌。
我唯一的直覺就是Nexus 7沒有廣播MEDIA_MOUNTED
,因爲它沒有真正的SD卡;但我無法收到BOOT_COMPLETED
的意圖。
爲了解決這個問題,是的,我有BOOT_COMPLETED
權限。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
你有沒有什麼活動?在重新啓動設備之前,您是否運行過一次活動? – CommonsWare
@CommonsWare沒有活動,接收者類運行一項服務。 – Ancantus