私はすべての発信コールをリッスンするブロードキャスト受信機を持っています。別の活動では、私はを発信にします。私の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を必要としていますか?
ブロードキャストレシーバーが呼び出されて、ちょっと余計なことはありません。私が知る限り、私は電話をかけるためにスタートアビリティを使用していますか? – Suan
「発信者」が「発信者」に登録されている可能性があるため、「ブロードキャスト受信者が呼び出されます。あなたの提案は、放送を送信してそこから(つまりonReceive()メソッドから)開始アクティビティを使用して放送を送信することです。 – Vivek
私は同じ問題を解決しましたか? – Androider