0

で発信通話を聞いていBroadcastReceiverます。

特定の電話をかけると、特定の番号および/または条件が満たされます - それは問題ではありません。私は電話を傍受します。

その後、別の番号に新しい電話をかけたいと思います。と、ここで困ってしまいます。コールは発信されません - 何も起こりません - 新しいアクティビティが開始されますが、コールは開始されません。空のビュー、それだけです。

ちなみにBroadcastReceiverはインテントを受け取り、CallInitiatingActivity.onCreate()呼び出されて実行されます。

ブロードキャストリスナー

public class OutgoingCallListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (conditionsAreMet()) {
            setResultData(null); //terminate current call
            Inetent intent = new Intent(context, CallInitiatingActivity.class)
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            startActivity(intent);
        }
    }
}

通話開始アクティビティ

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));
        startActivity(intent);
    }
}

使用する許可:

<uses-permission android:name="android.permission.CALL_PHONE"/>

デバッグ レベルの疑わしいログ:

checkAndCopyPhoneProviderExtras: some or all extras are missing.

行番号 2074 で、このクラスのメソッドまでた​​どりました。

4

3 に答える 3

0

あなたはおそらくあなたが正しい許可を持っていることを確認する必要があります:

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

追加すると役立つ場合があります

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

意図に。

于 2012-10-04T16:19:18.283 に答える
0

次のように、Manifest.xml で BroadcastReceiver クラスのアクションを定義します。

 <receiver android:name="yourBroadcastReceiverpackagename.BroadcastReceiverclassname" 
       android:exported="false">
 <intent-filter>
 <action 
       android:name="Declare your Action name here"/>
 </intent-filter>

于 2012-10-04T17:05:29.147 に答える
0

問題のコードは、新しい通話を正常に開始します。しかし、BroadcastReceiver はNEW_OUTGOING_CALLアクションでインテントを受け取るため、それを見ることができませんでした。

それは、意図がアクションACTION_CALLを持つ別の意図に「変換」される呼び出しを手動で作成したことを識別するために、エクストラを作成して配置するときです。NEW_OUTGOING_CALLそうすれば、追加されたすべての追加機能が効果的に失われます。

于 2012-10-09T11:08:46.030 に答える