4

アクティビティから新しい通話を開始しています。そして、ブール値のエクストラを渡そうとしています。

public class CallInitiatingActivity extends Activity {

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

        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number));
        intent.putExtra("com.demoapp.CUSTOM_CALL", true);
        startActivity(intent);
    }
}

発信呼び出しをリッスンする BroadcastReceiver も登録しています。

<receiver android:name=".OutgoingCallListener" android:exported="true" >
    <intent-filter android:priority="0" >
        <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

基本的に、 onReceive が余分なものを見ることを期待していますが、どういうわけか渡されません:

public class OutgoingCallListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();

        for (String key : extras.keySet()) {
            Log.i(Constant.LOG_TAG, key + ": " + extras.get(key));
        }
    }
}

出力:

android.phone.extra.ALREADY_CALLED:false
android.intent.extra.PHONE_NUMBER:+370652xxxxx
com.htc.calendar.event_uri:null
android.phone.extra.ORIGINAL_URI:tel:+370652xxxxx
4

1 に答える 1

3

カスタム エクストラは、「呼び出し」アクティビティを開始するために使用するインテントに存在します。NEW_OUTGOING_CALLただし、実際の呼び出しメカニズムの一部としてブロードキャストされるインテントにはコピーされません。これら 2 つの操作は別個のものであり、相互に間接的にのみ関連しています。NEW_OUTGOING_CALLIntentをブロードキャストできるのは、Android システム自体だけです。

このインテントに独自のエクストラを追加することはできません。達成しようとしていることを実行するには、別の方法を考え出す必要があります。

于 2012-10-08T06:58:16.527 に答える