0

アプリから通話機能を実装しようとしています。ある条件が真の場合、番号の前に#31#を追加して、発信者IDを非表示にします。#31#を追加しなくても大丈夫ですが、#31#を追加すると、電話アプリが読み込まれているように空白の画面が表示され、アプリケーション画面に戻ります。私のコードスニペットはこれです

        String ph = "123456789";            
        String phNumber;
        if (hideCallerId) {
            phNumber = "#31#" + ph;
        }
        else {
            phNumber = ph; 
        }

        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:"+phNumber));
        startActivity(intent);

ケース1: phNumberが123456789の場合、問題なく呼び出されます。

ケース2: phNumberが#31#123456789の場合、空白の画面がポップアップし、ユーザーがアプリケーション画面に戻ります。

#31#123456789を使用してデバイスからダイヤルしている場合でも、正常に電話がかけられます。私が見逃しているもの。誰かが私を助けることができますか?

リンクは私を助けませんでしたLink1。前もって感謝します。

4

3 に答える 3

2

これは実際には答えではありませんが、私の担当者はコメントするのに十分な高さではありません。phnumberがintなどとして宣言されている可能性はありますか?多分#はそれを台無しにしていますか?

それがうまくいかない場合は、使用してみましたACTION_DIALか?android開発者サイトには、ここでそれらの違いに関する詳細情報があります。それが役に立てば幸い。

于 2012-10-25T09:52:14.627 に答える
1

電話番号をエンコードするだけです。

String phonenumber = "03012345,1234,#31#,98765"; // , = pauses
encodedPhonenumber = URLEncoder.encode(phonenumber, "UTF-8");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + encodedPhonenumber)));

これを見てみたいと思うかもしれません。#31#が追加されると電話をかけることができません

于 2012-10-25T11:09:54.730 に答える
1

をダイヤルコマンドのよう'#'に動作するため、エンコードする必要があります。アクションコールインテントデータをで始まる番号で設定すると、代わりに空白の番号が呼び出され、エンコードされていない場合は8488449#848のような番号をダイヤルしようとします。その ため、たとえば8488449#848をダイヤル するには、少なくともシンボルをエンコードする必要があります。次のようにします。'#'8488449'#'Uri.encode("#")startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:8488449"+Uri.encode("#")+"848"));

于 2016-08-12T23:45:38.803 に答える