電話の起動時に実行されるサービスを作成しようとしていますが、SDカードからデータを読み取る必要があります。最初は受信機を使用してandroid.intent.action.BOOT_COMPLETED
いましたが、SDカードがロードされていることを確認するために以下のインテントに切り替えました。
MEDIA_MOUNTED
私の問題は、私のNexus 7では、意図を受け取っていないように見えることです。Nexus 7にはSDカードがありません(ただし、個別のSDカードパーティションがあります)。私もBOOT_COMPLETED
同じ運でその意図を試しました。エミュレーターとThunderboltで同じコードをテストしましたが、両方のインテントが機能します。
マニフェスト:
<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" />