广播接收器不接收ACTION_BOOT_COMPLETED(Broadcast Receiver n

2019-09-19 10:11发布

我尝试这样做,可以接收ACTION_BOOT_COMPLETED一个基本的广播接收器。 每当我在模拟器中运行它,它似乎并不像从广播接收器的代码。

清单如下:

<uses-sdk android:minSdkVersion="8" />

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <activity
        android:name=".BootAtStartupActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".BootAtStartupReceiver"
        android:enabled="true"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
</application>

</manifest>

MainActivity:

package com.mfcoding.android.bootatstartup;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class BootAtStartupActivity extends Activity {
static final String TAG = "BootAtStartupActivity";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Log.d(TAG, "onCreate");
}
}

广播接收器:

package com.mfcoding.android.bootatstartup;

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

public class BootAtStartupReceiver extends BroadcastReceiver {
static final String TAG = "BootAtStartupReceiver";

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
        Log.d(TAG, "*** onReceive ACTION_BOOT_COMPLETED");
    }

    Log.d(TAG, "*** onReceive");
}

}

在logcat中,我从来没有看到的广播接收器文件中的日志打印输出。 所有我在logcat中看到的是活动日志打印输出。 有任何想法吗? 我想在logcat中看到广播接收器类的日志报表打印。

链接到项目https://github.com/fangstar/BootAtStartup

Answer 1:

应用后出现的第一设备重启已安装并至少被执行一次之后的应用程序只能接收该广播意图。 还要注意的是,如果安装在外部存储应用程序,因为广播发送后外部存储被安装它可能永远不会收到该广播。



Answer 2:

尝试删除这一行:

<category android:name="android.intent.category.DEFAULT" />

从清单你的意图过滤器。 我已经成功地实施启动监听器没有这一行,所以我知道,是不是需要它,但我不知道肯定是否会导致其无法正常工作。 无论哪种方式,是值得一试,但。



Answer 3:

要注册您的活动的onCreate()方法的广播reciever。

registerReceiver(接收器,新的IntentFilter(Intent.ACTION_BATTERY_CHANGED));

接收器 - BroadcastReciever



文章来源: Broadcast Receiver not receiving ACTION_BOOT_COMPLETED