2016-12-30 3 views
0

私はモバイルAPPを開発しています。着信コールを連絡先グループに基づいて別の番号に転送する必要があります。私は連絡先をグループに分け、各グループには異なる転送電番があります。着信を受けると、そのグループに基づいて転送する必要があります。ダイナミックAndroidコール転送

私は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の番号を登録されて転送されません来るとき。 2番目の通話は正しい時に転送されます。 質問: 着信コール元の発信者IDを転送する方法

+0

最初に電話をかけると、転送されません。それは、電話の転送の番号xxxx番号です。これはよく分かりませんが、これはわかりません。 – AxelH

+0

:電話転送設定は無効です。 open:設定>マイデバイス>通話>追加設定>通話転送>音声通話を開きます。 最初のコールが到着し、電話機はレンジングし、コールは転送されません。しかし、最初のコールが来たら、電話転送設定が有効になり、xxxx番号が電話転送設定に登録されます。 2番目の所得コールはxxxxに正しく転送されます。 –

+0

まあ、私はあなたが持っている意図は、このシステムを知らない設定を有効にすることだと思います。だから私はこれが論理だと思う。転送がすでに受信されているので、転送が遅れることになります。手動で試すこともできます。 (電話を受ける設定を変更できるかどうかは分かりませんが、既に呼び出し中の場合は転送されません) – AxelH

答えて

0

これは私が見つけたものです。 答えは次のとおりです。モバイルでコールを受信した後にコール転送を行うことはできません 理由:コール転送は、デバイスではなくネットワークプロバイダによって行われるためです。

プロセス: - 最初に、MMIコード21を使用して、ネットワークプロバイダーからのコール転送を要求します。 - ネットワークプロバイダが、ご要求を登録し、デバイスのコール転送設定を変更します。 - 新しいコールネットワークプロバイダが直接転送すると、デバイスに何も表示されません。 as shown in this diagram

関連する問題