BOOT_COMPLETED从未收到过

时间:2012-04-09 22:28:23

标签: android android-intent broadcastreceiver boot

每个设备都发送BOOT_COMPLETED吗?我想在Boot Completed上启动一个Activity。

我在Manifest中添加了以下内容:

<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);
        } 
    }
}

我错过了什么吗?谢谢!

3 个答案:

答案 0 :(得分:5)

  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>
    

答案 1 :(得分:0)

作为起点,尝试将接收器的完整路径放入清单中。

答案 2 :(得分:0)

广播接收器事件可能失败的可能原因:

  1. 未在AndroidManifest.xml中声明接收器 在Manifest文件中声明接收者:

  2. 清单中的接收器xml拼写错误 Android系统区分大小写。因此,请检查AndroidMainfest.xml中的拼写和路径是否正确

  3. AVD长时间运行 重置您的avd /设备

  4. 4.如果你的应用程序被移动到sdcard.Say你注册了android.intent.action.BOOT_COMPLETED,甚至在mediascanner扫描sdcard之前就会触发启动事件。

    运行android的所有设备发送BOOT_COMPLETE:P 再次检查并尝试:) 一切顺利:)