簡體   English   中英

無法解析撥號程序中的“#”登錄

[英]Cannot parse “#” sign in dialer

我正在制作自定義撥號器,到現在為止一切都非常完美。 現在,在測試時,我看到“#”符號無法正常工作。 它顯示在撥號器上,但在通話時消失。 例如,如果我撥打* 121#,則在通過股票撥號器撥打電話時變成* 121。 這是我的活動代碼-

public class DialPadActivity extends Activity {

private EditText numberField = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initializeButtonArrowClickListeners();
}

public void dialButtonClick(View v) {
    int buttonId = v.getId();
    putNumberToEditText(buttonId);
}

public void buttonPhone_click(View v) {
    if (numberField != null) {
        String phone = numberField.getText().toString();
        String uriString = "tel:" + phone;
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse(uriString));
        startActivity(intent);
    }
}

public void putNumberToEditText(int buttonId) {
    switch (buttonId) {
    case R.id.dial_button0:
        putNumber("0");
        break;
    case R.id.dial_button1:
        putNumber("1");
        break;
    case R.id.dial_button2:
        putNumber("2");
        break;
    case R.id.dial_button3:
        putNumber("3");
        break;
    case R.id.dial_button4:
        putNumber("4");
        break;
    case R.id.dial_button5:
        putNumber("5");
        break;
    case R.id.dial_button6:
        putNumber("6");
        break;
    case R.id.dial_button7:
        putNumber("7");
        break;
    case R.id.dial_button8:
        putNumber("8");
        break;
    case R.id.dial_button9:
        putNumber("9");
        break;
    case R.id.dial_button_s:
        putNumber("*");
        break;
    case R.id.dial_button_p:
        putNumber("#");
        break;
    }
}

public void putNumber(String number) {
    if (numberField == null) {
        numberField = (EditText) findViewById(R.id.phone_number_field);
    }
    numberField.append(number);
}

private void initializeButtonArrowClickListeners() {
    ImageButton buttonArrow = (ImageButton) findViewById(R.id.button_arrow);
    buttonArrow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (numberField != null && numberField.length() > 0) {
                String previousNumbers = numberField.getText().toString();
                String numbersMinusTheLast = previousNumbers.substring(0,
                        numberField.length() - 1);
                numberField.setText(numbersMinusTheLast);
            }
        }
    });
    buttonArrow.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            if (numberField != null) {
                numberField.setText("");
            }
            return false;
        }
    });
}

我在哪里做錯了?

使用URLEncoder.encode(string,“ UTF-8”);

例如:

String uriString = "tel:" + URLEncoder.encode(phone, "UTF-8");

用%23替換您的#符號。

也就是說: *121%2311而非*121#11

            String uri = "tel:" + "*6133%235345";

            Intent intent;
            intent = new Intent(Intent.ACTION_CALL, Uri.parse(uri));
            startActivity(intent);

輸出是:* 6133#5345

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM