2016-03-30 38 views
0

私はすでに私の答えを探してみましたが、私がチェックしていた特定の答えを得ることができませんでした。ブロードキャスト受信者は毎回呼び出されません

問題: コール状態変更受信者を作成しようとしています。私はマニフェストに放送受信機を登録して、受信機クラスを作りました。 onReceive()では、PhonsStateListenerを登録して呼び出し状態の変更を待機します。 コールを受信すると、onReceive()が呼び出され、接続が解除されると、onReceiveが再度呼び出されます。 しかし、上記のプロセスをもう一度繰り返すと、onReceive()は着信コールで呼び出されますが、その呼び出しを切断すると呼び出されません。

受信機

 <receiver android:name=".CallReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"/> 
     </intent-filter> 

のための私のマニフェストは、私がこれで間違っている可能性がどのような見当がつかない。問題は、2番目の呼び出しを切断するときにonReceive()が呼び出されないことです。他のコードが必要な場合は教えてください。私はJellyBean注2にチェックしています4.1.2

答えて

0

あなたがマニフェストファイルにこれを追加しようとしました:

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

とunregisterReceiver()あなたの活動にごブロードキャストすることを忘れないでください:

@Override 
    protected void onDestroy() { 
     LocalBroadcastManager.getInstance(this).unregisterReceiver(your_broadcast_name); 
     super.onDestroy(); 
    } 
+0

ここでは、ウォークロックの許可の使用を理解できません。 wakelockを取得しようとしていないし、セキュリティの例外も出ていない。また、受信機の登録を解除する理由を理解できません。また、これはレシーバなので、自分のアクティビティをまったく開いていない可能性もあります(onDestroyは呼び出されません)が、レシーバは正常に動作するはずです。 –

0

あなたは許可を取得する必要があります。あなたの意見を共有するための

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

はい、既にあります。したがって、私は初めてこれを取得しています –

0

感謝を。問題は、放送受信機のコードであった。私はonReceive()メソッドで何か問題を起こしていました。これは、システムレベルで問題が発生し、プロセスが終了していたためです。その問題を修正した後はうまくいった。

+0

これは質問で編集するか、コメントにする代わりにコメントにする必要があります –

関連する問題