2011-02-03 10 views
2

私はすべての発信コールをリッスンするブロードキャスト受信機を持っています。別の活動では、私は発信にします。私のBCでは、どの呼び出しがアクティビティで作成されたかを判断できるようにするため、私は呼び出しを行うときにマーカーフィールドを配置するのにputExtras()を使用します。問題は、BCのonReceive()では、余分なデータフィールドが全く表示されない(nullを返す)ことです。ここでBroadcastReceiverから受信したインテントの不足

は、関連するアクティビティコードです:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     appGlobal gState = (appGlobal)getApplicationContext(); 
     dh = gState.getSqlDataHelper(); 
     Bundle extras = getIntent().getExtras(); 
     if(extras != null) 
     { 
      phoneNumber = extras.getString("number"); 
     } 
     makePhoneCall(); 
     finish(); 
    } 

private void makePhoneCall() 
    { 

     if (phoneNumber.length() < 1) { 
      return; 
     } 
     String url = "tel:" + phoneNumber; 
     Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url)); 
     intent.putExtra("number", "bla"); 

     startActivity(intent); 
    } 

そしてここでは、関連するBCコードです:

public class CallMeNotServiceCallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 

     if (intent.getStringExtra("number") != null) 
     { Log.w("bla", "HAS KEY!!!"); } 
... 

この状況はPendingIntentを必要としていますか?

答えて

2

公式BroadcastReceiver API referenceは明らかに(第3段落)状態:

[...]意図ブロードキャスト・メカニズムが活動を開始するために使用されているインテントから完全に分離されています。 BroadcastReceiverがstartActivity()で使用されたインテントを参照または取得する方法はありません。 [...]

だからジェイソン&ヘルボーイとして)代わりにmakePhoneCall(での活動を開始すると、示唆している、あなたはそれが、マーカーが含まれている場合にのみ(順番に活動を開始し、あなたのBroadcastReceiverにブロードキャストを送信もちろん...)

1

追加のロギングを追加すると、実際にBroadcastReceiverがまったく呼び出されないことがわかりますか?

sendBroadcast(intent)を使用して、BroadcastReceiverが受信するインテントを送信します。あなたは現在、特定のアクティビティクラスを持つインテントが開始されることを期待するstartActivityを使用しています。

+0

ブロードキャストレシーバーが呼び出されて、ちょっと余計なことはありません。私が知る限り、私は電話をかけるためにスタートアビリティを使用していますか? – Suan

+0

「発信者」が「発信者」に登録されている可能性があるため、「ブロードキャスト受信者が呼び出されます。あなたの提案は、放送を送信してそこから(つまりonReceive()メソッドから)開始アクティビティを使用して放送を送信することです。 – Vivek

+0

私は同じ問題を解決しましたか? – Androider

関連する問題