2012-04-09 45 views
2

是否每個設備都發送BOOT_COMPLETED?我想在啓動完成時啓動一個活動。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); 
     } 
    } 
} 

我缺少的東西?謝謝!

+1

我想你會發現,回答我的問題http://stackoverflow.com:

,所有的設備,其運行Android發送BOOT_COMPLETE/questions/9892002/broadcastreceivers-in-ics將解決您的問題。 – NickT 2012-04-09 22:43:16

回答

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> 
    
0

作爲一個起點,請嘗試將接收器的完整路徑放在清單中。

0

的可能原因廣播reciever事件可能失敗:在AndroidManifest.xml 沒有宣佈

  1. 接收機聲明接收器的清單文件:

  2. 接收機在清單xml拼寫錯誤 Android系統區分大小寫。所以,檢查拼寫和路徑是AndroidMainfest.xml

  3. AVD正確的,如果您的應用程序在移動到sdcard.Say很長一段時間 重置您的AVD /設備

4.Also運行你已經註冊了android.intent.action.BOOT_COMPLETED,甚至在mediascanner掃描sdcard之前觸發啓動事件。再次P 檢查,並嘗試:) 一切順利:)