【问题标题】:Dynamic Android Call forwarding动态 Android 呼叫转移
【发布时间】: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。
  • 好吧,我猜你的意图是启用设置(不知道这个系统)。所以我认为这是逻辑。已收到将启用转发的呼叫,因此转发为时已晚。你可以手动试试。 (不确定您是否可以更改设置是否会接听电话,但如果它已经响铃,则可能不会被转发)
  • 你说得对“转接太晚了”..“不确定是否可以更改设置是否会接听电话”...如何在响铃前控制来电? ...我需要我的应用程序来接收来电而不是电话...
  • 问题是,你为什么要等一个电话来设置转发,你不能根据日期来设置它,或者使用一个按钮,...。我不认为有任何类似于“预呼叫进入”的东西。一旦接到电话,就为时已晚。

标签: java android telephony


【解决方案1】:

这是我发现的。 答案是:手机收到来电后无法转接 原因:因为呼叫转移是由网络提供商而不是您的设备完成的。

过程: - 首先您通过使用:MMI 代码 21 请求网络提供商的呼叫转移。 - 网络提供商将注册您的请求并更改您设备中的呼叫转移设置。 - 当新的呼叫网络提供商将直接转发时,您的设备不会收到任何内容。 as shown in this diagram

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多