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 回答