BOOT_COMPLETED从未收到(BOOT_COMPLETED never received)

2019-07-28 20:58发布

是否每个设备发送BOOT_COMPLETED? 我想在结束启动,开始一个活动。

我把清单中的以下内容:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".BootFinished">            
    <intent-filter>                
         <action android:name="android.intent.action.BOOT_COMPLETED" />           
    </intent-filter>        
</receiver>

创建下面的类(接收器):

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.widget.Toast;

public class BootFinished extends BroadcastReceiver {

    @Override        
    public void onReceive(Context mContext, Intent intent) {
        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {               
          //do something like start an activity or service
        }

        try {
            PackageManager pm = mContext.getPackageManager();
            Intent launch = pm.getLaunchIntentForPackage("com.example.afterboot");
            mContext.startActivity(launch);
        } catch (Exception e) {
            Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT);
        } 
    }
}

我缺少的东西吗? 谢谢!

Answer 1:

  1. 添加完整路径;其次在您的接收器添加权限。

      <receiver android:name="com.example.BootFinished" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 


Answer 2:

作为一个出发点,尽量把你的接收器的完整路径清单。



Answer 3:

可能的原因广播reciever事件可能失败:

  1. 在AndroidManifest.xml中未声明接收机中声明的清单文件的接收器:

  2. 接收机在清单XML拼错Android的系统是大小写敏感的。 所以,检查拼写和路径是正确的AndroidMainfest.xml

  3. AVD运行很长一段时间重置您的AVD /设备

4.Also如果您的应用程序是在移动到sdcard.Say您已经注册了android.intent.action.BOOT_COMPLETED,触发启动事件mediascanner扫描SD卡甚至在。

和所有运行Android设备发送BOOT_COMPLETE:再次p检查和尝试:)一切顺利:)



文章来源: BOOT_COMPLETED never received