【问题标题】:Android Check if call forwarding is activatedAndroid 检查呼叫转移是否已激活
【发布时间】:2016-08-29 23:09:57
【问题描述】:

我正在构建一个呼叫转移应用程序,并已使用 **21*xxxxxx# ussd 代码通过 ACTION_CALL Intent 激活呼叫转移。但是我还没有找到检查呼叫转移是否处于活动状态的解决方案。

是否有任何解决方案可以从 android 系统中检查呼叫转移是否处于活动状态?

【问题讨论】:

标签: android


【解决方案1】:
 TelephonyManager manager = (TelephonyManager)    
 this.getSystemService(TELEPHONY_SERVICE);     
 manager.listen(new MyPhoneStateListener(), 
 PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR ); 

 class MyPhoneStateListener extends PhoneStateListener{  

  @Override
    public void onCallForwardingIndicatorChanged(boolean cfi) {
      Log.i(TAG,"onCallForwardingIndicatorChanged  CFI ="+cfi);

         preferences.edit().putBoolean("CALL_FORWARD_ACTIVE", cfi).commit();
        super.onCallForwardingIndicatorChanged(cfi);
    }

}

如果 cfi 返回 true 表示设置呼叫转移成功

【讨论】:

  • 这仅适用于所有呼叫的转接(无条件)。有没有办法在忙时监听是否有转发活动?
【解决方案2】:

你可以让 Brodcast 类注册它,你可以像跟踪调用一样

public class CallBroadcastReceiver extends BroadcastReceiver
{
    public static String numberToCall;
    public void onReceive(Context context, Intent intent) {
        Log.d("CallRecorder", "CallBroadcastReceiver::onReceive got Intent: " + intent.toString());
        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
            numberToCall = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
            Log.d("CallRecorder", "CallBroadcastReceiver intent has EXTRA_PHONE_NUMBER: " + numberToCall);
        }

    }
}

【讨论】:

    【解决方案3】:

    注意事项: 以下答案是建议。我没有亲自尝试过,所以你最好试试看结果。

    从您的 gsm 号码中,您可以通过拨打 *#21# 查看您的呼叫转移选项。因此,您可以尝试从应用程序中拨打此号码并阅读 ussd 响应。

    第 1 部分:拨打号码

    Intent intentCallForward = new Intent(Intent.ACTION_CALL);                               
    Uri uri = Uri.fromParts("tel", "*#21#", "#"); 
    intentCallForward.setData(uri);                                
    startActivity(intentCallForward);
    

    第 2 部分:阅读 ussd 响应

    没有 API 可以做到这一点。但是here 在这个 SO 答案中提出了一些您可以尝试的方法。

    祝你好运

    【讨论】:

      【解决方案4】:

      是的,您可以使用 *#21# 来检查 CF,就像使用 **21*xxxxxx# 来激活 CF 一样。 顺便说一句,这些是 MMI 代码,而不是 USSD 代码。

      【讨论】:

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