2

電話をかけるアクティビティがあります:

public void call(String number) {
    Intent intent = new Intent("android.intent.action.CALL");
    intent.setData(Uri.parse("tel:" + number));
    intent.putExtra("MY_EXTRA", "Hello");
    startActivity(intent);
    finish();
}

通話用のブロードキャスト レシーバーをセットアップしました。

public class OutgoingCallReceiver extends BroadcastReceiver {
    @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("Extra", intent.getStringExtra("MY_EXTRA", "Default"));
        }
    }
}

そしてそれを登録しました:

<receiver android:name=".OutgoingCallReceiver">
    <intent-filter android:priority="-1">
        <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</receiver>

放送受信機は動作します。ただし、イベントをダイヤラーから受け取るかアクティビティから受け取るかに関係なく、余分なものはありません。

エクストラが進まないのはなぜですか?

4

3 に答える 3

1

そのようには機能しません。「ACTION_CALL」に任意のエクストラを追加しIntentて、これらのエクストラがIntentブロードキャストされる「NEW_OUTGOING_CALL」に表示されることを期待することはできません。「NEW_OUTGOING_CALL」ブロードキャストに独自のエクストラを追加する方法はありませんIntent。ダイヤラがIntent(電話番号などの) に追加した追加情報のみを取得します。

于 2015-07-02T09:03:34.407 に答える
0

すべて問題ないようですが、私が見ることができるように:

http://developer.android.com/reference/android/content/Intent.html#getStringExtra(java.lang.String)

intent.getStringExtra("MY_EXTRA")

getIntExtra() などのようなデフォルト値はありません...

于 2015-07-01T15:45:27.493 に答える
0

送信したインテントは、ブロードキャスト レシーバーによって捕捉されることはありません。呼び出しをトリガーし、それ自体のブロードキャスト インテントを送信します。

呼び出し元は、あなたが送信したその他のエクストラを無視します。それらをどうするかわかりません。

SharedPreferencesインテントを送信する Activity と BroadcastReciever の間の状態を保存するために使用することができます。

于 2015-07-03T14:50:59.050 に答える