2012-05-07 32 views
1

私は電話機の呼び出しが停止したときにアクティビティを開始しようとすると、強制的に強制終了します。あなたが活動または別の方法を開始するには、この場合のコンテキストを取得する方法を私に言うことができる場合、私は嬉しくなるので、ここで私のブロードキャストレシーバは開始アクティビティ

public class Incoming extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 

     MyPhoneStateListener phoneListener=new MyPhoneStateListener(); 
      TelephonyManager telephony = (TelephonyManager) 
      arg0.getSystemService(Context.TELEPHONY_SERVICE); 
     phoneListener.context = arg0; 
      telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE); 
    } 

} 

をだと、これは活動

public class MyPhoneStateListener extends PhoneStateListener { 

    int prevstate; 


    public void onCallStateChanged(int state,String incomingNumber){ 


     if(prevstate==TelephonyManager.CALL_STATE_OFFHOOK && state == TelephonyManager.CALL_STATE_IDLE){ 

       Log.i("PARm","Here the activity should start"); 
      } 
     else if(prevstate==TelephonyManager.CALL_STATE_RINGING && state == TelephonyManager.CALL_STATE_IDLE){ 

      Log.i("PARM","Here the activity should start"); 

     } 



    switch(state){ 
     case TelephonyManager.CALL_STATE_IDLE: 
      Log.d("DECallNoteActivity.get getContext();BUG", "IDLE"); 
      prevstate = state; 
     break; 
     case TelephonyManager.CALL_STATE_OFFHOOK: 
      Log.d("DEBUG", "OFFHOOK"); 
      prevstate = state; 
     break; 
     case TelephonyManager.CALL_STATE_RINGING: 
      Log.d("DEBUG", "RINGING"); 
      prevstate = state; 
     break; 
     } 

     } 


    } 

を開始する必要がありますそれを始める方法。

ありがとうございます。

+0

すべてのlogcatエラーを投稿してください。 – Sam

+0

あなたのBroadcastReceiverはどのように設定されていますか?マニフェストのタグを使用するか、Context.registerReceiver()を使用しますか? –

答えて

1

ブロードキャスト受信者のコンテキストは、onReceiveコールの間だけ有効です。後でそのコンテンツを保存して再利用することはできません。このようにしてアクティビティを開始する必要がある場合は、BroadcastReceiveronReceiveメソッドからServiceを開始し、電話状態リスナーを作成して、必要なActivityを起動させることができます。Activityそれ自体を止める。

+0

**ありがとう、あなたは私の一日を作った** – J1and1

関連する問題