2016-09-18 5 views
1

を実行していないされた後、私はこの権限を使用:Androidの再起動の放送Reciverが

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

を、受信機がある:

<receiver android:name=".auth.NotificationBroadcast" android:enabled="true" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

とコード内の受信機は、次のとおりです。再起動後

@Override 
    public void onReceive(Context context, Intent intent) { 

     System.out.println("BroadcastReceiverBroadcast--------------------ReceiverBroadcastReceiverBroadcastReceiver----------------BroadcastReceiver"); 

     if (intent != null) { 
      String action = intent.getAction(); 

     switch (action) { 
      case Intent.ACTION_BOOT_COMPLETED: 
       System.out.println("Called on REBOOT"); 
       // start a new service and repeat using alarm manager 

       break; 
      default: 
       break; 
     } 
    } 
} 

ロリポップではまだ呼び出されていませんが、マシュマロでは実行中です。

答えて

1

この行を受信者のインテントフィルターに入れてみます。

<action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" /> 

アプリケーションはSDカードにインストールされている場合、あなたはandroid.intent.action.BOOT_COMPLETEDイベントを取得するには、これを登録する必要があります。

更新:あなたのアプリはアラームサービスを使用しているため、外部ストレージにはインストールしないでください。参照:http://developer.android.com/guide/topics/data/install-location.html

0

プラットフォームのブートが完了するたびに、android.intent.action.BOOT_COMPLETEDアクションのインテントがブロードキャストされます。この目的を達成するには、アプリケーションを登録する必要があります。登録するにはAndroidManifest.xmlにこれを追加してください

<receiver android:name=".ServiceManager"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
</receiver> 

したがって、ブートイベントの意図を受け取るためには、ServiceManagerをブロードキャスト受信機として使用します。次のようにServiceManagerクラスがしなければならない:

public class ServiceManager extends BroadcastReceiver { 

    Context mContext; 
    private final String BOOT_ACTION = "android.intent.action.BOOT_COMPLETED"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
       // All registered broadcasts are received by this 
     mContext = context; 
     String action = intent.getAction(); 
     if (action.equalsIgnoreCase(BOOT_ACTION)) { 
         //check for boot complete event & start your service 
      startService(); 
     } 

    } 


    private void startService() { 
       //here, you will start your service 
     Intent mServiceIntent = new Intent(); 
     mServiceIntent.setAction("com.bootservice.test.DataService"); 
     mContext.startService(mServiceIntent); 
    } 
} 

我々はサービスを開始しているので、それはあまりにもAndroidManifestに言及する必要があります。

<service android:name=".LocationService"> 
    <intent-filter> 
     <action android:name="com.bootservice.test.DataService"/> 
    </intent-filter> 
</service> 
関連する問題