【发布时间】:2011-06-30 10:00:12
【问题描述】:
我在这里寻找类似的问题,但由于某种原因,我的 BroadcastReceiver 永远不会收到 android.intent.action.BOOT_COMPLETED Intent。
这是我的(相对)Android.Manifest 文件:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<receiver android:name=".BootReceiver"
android:enabled="true"
android:exported="true"
android:label="BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
这是真正的接收者。
public class BootReceiver extends BroadcastReceiver {
private static final String TAG="BootReceiver";
@Override public void onReceive(Context context,Intent intent){
try{
context.startService(new Intent(context,ConnectivityListener.class));
Log.i(TAG,"Starting Service ConnectivityListener");
}catch(Exception e){
Log.e(TAG,e.toString());
}
}
}
谢谢!非常感谢任何帮助
【问题讨论】:
-
盲猜——你的receiver不在主包中,也没有package/mainpackage/BootReceiver.java,而是package/mainpackage/receivers/BootReceiver.java,即receiver的路径不对.
-
谢谢,我没想过要检查,但运气不好,它肯定在默认包中。
-
当接收者声明包含 android:exported="true" 会为接收者创建新进程时,可能会发生同样的问题。您的记录器 (Log.i) 将在新控制台中打印结果,您甚至不会在 android 监视器 (Android Studio) 下注意到这些结果。除非您知道它的含义,否则我建议您删除此声明。
标签: android broadcastreceiver boot