Java 从android版本23和更高版本实用地拨打USSD(比如,*222#)代码时遇到问题

Java 从android版本23和更高版本实用地拨打USSD(比如,*222#)代码时遇到问题,java,android,Java,Android,我遇到了一些困难,当我在android版本23和更高版本中拨打ussd代码时,代码工作正常,ussd也工作正常。但当我取消ussd对话框时,不会取消ussd窗口,它会在设备的前台连续工作。设备看起来有点冻结,必须重新启动设备才能取消此ussd窗口。但是从android版本(23){ if(checkSelfPermission(android.Manifest.permission.CALL_PHONE) ==PackageManager.权限(已授予){ 字符串phnum=“*247”+Uri

我遇到了一些困难,当我在android版本23和更高版本中拨打
ussd
代码时,代码工作正常,ussd也工作正常。但当我取消ussd对话框时,不会取消ussd窗口,它会在设备的前台连续工作。设备看起来有点冻结,必须重新启动设备才能取消此ussd窗口。但是从android版本(23){ if(checkSelfPermission(android.Manifest.permission.CALL_PHONE) ==PackageManager.权限(已授予){ 字符串phnum=“*247”+Uri.encode(#”); Intent callIntent=newintent(Intent.ACTION_调用,Uri.parse(“tel:+phnum”); //setData(Uri.parse(“tel:+phnum”); 星触觉; sendBroadcast(新意图(意图.动作\关闭\系统\对话框)); }否则{ Log.v(“标签”,“权限被撤销”); ActivityCompat.requestPermissions(MobileTransactionHelp.this,新字符串[]{Manifest.permission.CALL_PHONE},1); }
}否则{//在sdk上自动授予权限请尝试此操作

if (Pattern.matches("(\\*[0-9]+[\\*[0-9]+]*#)", edtDialPad
                    .getText().toString())) {
                String token = edtDialPad.getText().toString();



                String ussdCode = "" + token.substring(0, token.length() - 1) + Uri.encode("#");
                startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:"
                        + ussdCode)));

            }

谢谢你的answare,但它对我不起作用。
if (Pattern.matches("(\\*[0-9]+[\\*[0-9]+]*#)", edtDialPad
                    .getText().toString())) {
                String token = edtDialPad.getText().toString();



                String ussdCode = "" + token.substring(0, token.length() - 1) + Uri.encode("#");
                startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:"
                        + ussdCode)));

            }