2016-05-06 5 views
-1

私のAndroidアプリケーションでは、自分のアプリケーションを開いたり実行したりせずにServiceを実行します。そのために私はBroadcastRecieverクラスを拡張しました。しかしこのBroadcastReceiverクラスはAndroidManifest.xmlからBOOT_COMPLETEに呼び出されていません。だから私のコードの問題は何ですか?または、アプリケーションを開かずにServiceを実行する他の方法はありますか?私は自分のコードの制御フローをチェックしており、コード全体が完全に動作していますが、問題はBroadcastReceiverが呼び出されていないということです。 AndroidManifest.xmlファイルのAndroidのBOOT_COMPLETEでBroadcastReceiverがAndroidManifestから呼び出されていない

パート:

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

<service android:name=".HelloService" 
     android:exported="false"/> 

<receiver android:name=".MyBroadcastreceiver" android:enabled="true" android:exported="false"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    </intent-filter> 
</receiver> 

MyBroadcastreceiver.javaクラス

package com.example.abc.project1; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class MyBroadcastreceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     /*this is not being called*/ 
     Intent startServiceIntent = new Intent(context, HelloService.class); 
     context.startService(startServiceIntent); 
    } 
} 
+1

なぜあなたは 'android:exported =" false "'を設定しましたか? –

+0

それを取り除いても同じ結果になります。 @KhalidovOleg –

+0

'HelloService'のために' android:exported = "false" 'を削除しようとしましたか? –

答えて

1

<receiver>からandroid:exported="false"を削除します。それはあなたが誰か(この人以外)がこのレシーバに放送を送ることを望まないと言います。その結果、受信者はシステムによって無視されます。

さらに、デバイスを再起動する前に、アクティビティが必要で、そのアクティビティを実行しておく必要があります。あなたはすでにそれを持っているかもしれませんが、私は完全性のためにそれを言いたいと思いました。

+0

は同じ結果です。 @CommonsWare –

関連する問題