我正在尝试编写一个在手机启动时运行的服务,并且必须从SD卡读取数据.起初我使用了一个接收器,android.intent.action.BOOT_COMPLETED但切换到下面的意图,以确保已加载SD卡.
我的问题是,在我的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>
Run Code Online (Sandbox Code Playgroud)
本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);
//}
}
}
Run Code Online (Sandbox Code Playgroud)
我注释了意图匹配只是为了尝试并记录该类是否完全执行.
我唯一的预感是Nexus 7没有广播,MEDIA_MOUNTED因为它没有真正的SD卡; 但我也无法收到BOOT_COMPLETED意图.
并提出这个问题; 是的我有BOOT_COMPLETED权限.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)