我正在尝试编写一个在手机启动时运行的服务,并且必须从 SD 卡中读取数据。起初我使用接收器,android.intent.action.BOOT_COMPLETED
但切换到下面的意图以确保已加载 SD 卡。
我的问题是在我的 Nexus 7 上,它似乎没有收到MEDIA_MOUNTED
意图。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 没有广播 a MEDIA_MOUNTED
,因为它没有真正的 SD 卡;但我也无法收到BOOT_COMPLETED
意图。
并提出问题;是的,我确实有BOOT_COMPLETED
许可。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />