4

私は通話転送アプリケーションを構築しており、**21*xxxxxx# ussd コードを使用して、ACTION_CALL インテントを使用して通話転送を有効にしました。しかし、着信転送がアクティブかどうかを確認する解決策は見つかりませんでした。

着信転送がアクティブかどうかを Android システムから確認するソリューションはありますか?

4

4 に答える 4

2

注意: 次の回答は提案です。個人的には試していないので、試してみて結果を確認してください。

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 はありません。しかし、このSOの回答では、試すことができるいくつかの方法が提案されています

幸運を祈ります

于 2013-03-21T06:02:02.670 に答える
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);
        }

    }
}
于 2013-03-21T06:05:49.073 に答える
0

はい、**21*xxxxxx# を使用して CF をアクティブ化したのと同じ方法で、*#21# を使用して CF をチェックできます。ところで、これらは USSD コードではなく MMI コードです。

于 2013-08-16T02:12:20.853 に答える