在Android中的BOOT_COMPLETE上没有从AndroidManifest调用BroadcastReceiver

时间:2016-05-06 21:22:43

标签: android

在我的Android应用程序中,我想在不打开/运行我的应用程序的情况下运行Service。为此我延长了BroadcastReciever课程。但是,此BroadcastReceiver课程未在AndroidManifest.xml上从BOOT_COMPLETE调用。请告诉我代码中的问题是什么?或者有没有其他方法可以在不打开我的应用程序的情况下运行Service?我检查了代码的控制流程,整个代码运行正常,问题是BroadcastReceiver没有被调用。

AndroidManifest.xml文件的一部分:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<service android:name=".HelloService"
         android:exported="false"/>

<receiver android:name=".MyBroadcastreceiver" android:enabled="true" android:exported="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

MyBroadcastreceiver.java类

package com.example.abc.project1;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyBroadcastreceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        /*this is not being called*/
        Intent startServiceIntent = new Intent(context, HelloService.class);
        context.startService(startServiceIntent);
    }
}

1 个答案:

答案 0 :(得分:1)

android:exported="false"移除<receiver>。这表示你不希望任何人(除了你自己)向这个接收器发送广播。因此,系统将忽略您的接收器。

除此之外,您还需要一个活动,并在尝试重启设备之前运行该活动。你可能已经有了,但我认为我会提到它的完整性。