【发布时间】:2012-09-04 07:39:21
【问题描述】:
我正在尝试编写一个在手机启动时运行的服务,并且必须从 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 没有广播MEDIA_MOUNTED,因为它没有真正的 SD 卡;但我也无法收到BOOT_COMPLETED 意图。
为了解决这个问题;是的,我确实拥有BOOT_COMPLETED 权限。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
【问题讨论】:
-
你有活动吗?您是否在重启设备之前运行过一次活动?
-
@CommonsWare 无活动,接收器类运行服务。
标签: java android broadcastreceiver android-manifest