在Android中运行USSD代码并将应用程序保留在第一位

我正在Android中创建一个应用程序,需要在后台运行USSD代码。 没有在后台发送我的申请,

每当我使用Intent.ACTION_CALL运行USSD时

String ussdCode = "*" + "123" + Uri.encode("#"); startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + ussdCode))); 

它在后台发送我的应用程序,并在我的应用程序上打开拨号程序接口。

因此,可以在不使用开放式拨号程序接口的情况下运行USSD代码。

谢谢。

使用以下代码:

 String ussdCode = "*123#"; Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(ussdToCallableUri(ussdCode)); try{ startActivity(intent); } catch (SecurityException e){ e.printStackTrace(); } 

以下是将ussd代码转换为可调用ussd的方法:

 private Uri ussdToCallableUri(String ussd) { String uriString = ""; if(!ussd.startsWith("tel:")) uriString += "tel:"; for(char c : ussd.toCharArray()) { if(c == '#') uriString += Uri.encode("#"); else uriString += c; } return Uri.parse(uriString); }