【发布时间】:2016-12-30 06:25:48
【问题描述】:
我正在开发一个移动应用程序,我需要根据联系人组将来电转发到不同的号码。我将我的联系人分组,每个组都有不同的呼叫转移号码。当我收到来电时,我应该根据它的组转发它。
我在 Call_State_Ringing 的 PhoneStateListener 中编写了这段代码:
package com.example.user2.callforwardnew;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
public class CallActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TelephonyManager telephonyManager =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener callStateListener = new PhoneStateListener() {
public void onCallStateChanged(int state, String incomingNumber){
if(state==TelephonyManager.CALL_STATE_RINGING){
String url = "tel:" + "**21*" + "XXXXX" + Uri.encode("#");
Intent intent1 = (new Intent(Intent.ACTION_CALL, Uri.parse(url)));
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent1);
}
if(state==TelephonyManager.CALL_STATE_OFFHOOK){
Toast.makeText(getApplicationContext(),"Phone is Currently in A call",
Toast.LENGTH_LONG).show();
}
if(state==TelephonyManager.CALL_STATE_IDLE){
Toast.makeText(getApplicationContext(),"phone is neither ringing nor in a call",
Toast.LENGTH_LONG).show();
}
}
};
telephonyManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE);
}
}
问题是:当第一个电话来电时,它不会被转移,它只是在电话转移中注册 xxxx 号码。然后第二个呼叫将在正确的时间转发。 问题: 如何根据来电显示来电转接
【问题讨论】:
-
第一次来电时不会被转接,只是在电话转接中注册xxxx号码你能不能解释清楚,这个不清楚
-
first : 电话转接设置被禁用。打开:设置>我的设备>通话>附加设置>呼叫转移>语音通话。然后第一个电话会来,电话会测距并且没有呼叫转移。但是在第一次来电后,电话转接设置将被启用,xxxx 号码将被注册到电话转接设置中。第二个收入电话将正确转发到 xxxx。
-
好吧,我猜你的意图是启用设置(不知道这个系统)。所以我认为这是逻辑。已收到将启用转发的呼叫,因此转发为时已晚。你可以手动试试。 (不确定您是否可以更改设置是否会接听电话,但如果它已经响铃,则可能不会被转发)
-
你说得对“转接太晚了”..“不确定是否可以更改设置是否会接听电话”...如何在响铃前控制来电? ...我需要我的应用程序来接收来电而不是电话...
-
问题是,你为什么要等一个电话来设置转发,你不能根据日期来设置它,或者使用一个按钮,...。我不认为有任何类似于“预呼叫进入”的东西。一旦接到电话,就为时已晚。