2

Does every device send the BOOT_COMPLETED? I want to start an Activity on Boot Completed.

I put the following in the 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>

Created the following class (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);
        } 
    }
}

Am I missing something? Thanks!

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 で宣言されていない マニフェスト ファイルで受信者を宣言します。

  2. マニフェスト xml のレシーバーのスペルが間違っている Android システムでは、大文字と小文字が区別されます。そのため、AndroidMainfest.xml でスペルとパスが正しいことを確認してください。

  3. AVD が長時間実行されている avd/デバイスをリセットします

4. また、アプリが sdcard に移動した場合、android.intent.action.BOOT_COMPLETED に登録したとします。メディア スキャナーが sdcard をスキャンする前であっても、ブート イベントがトリガーされます。

Android を実行するすべてのデバイスが BOOT_COMPLETE を送信します:P もう一度確認して試してください :) よろしくお願いします :)

于 2013-01-25T11:50:00.570 に答える