2

每个设备都发送 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);
        } 
    }
}

我错过了什么吗?谢谢!

4

3 回答 3

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>
    
于 2012-04-09T22:49:26.973 回答
1

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

于 2012-04-09T22:41:26.283 回答
0

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

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

  2. Manifest xml 中的 Receiver 拼写错误 Android-System 区分大小写。因此,请检查 AndroidMainfest.xml 中的拼写和路径是否正确

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

4.此外,如果您的应用程序已移至 sdcard。假设您已注册 android.intent.action.BOOT_COMPLETED,甚至在 mediascanner 扫描 sdcard 之前触发启动事件。

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

于 2013-01-25T11:50:00.570 回答