2015-08-03 43 views
4

我创建一个应用程序在Android中,这需要在后台运行USSD代码。没有送我的后台应用程序,运行USSD代码在Android和保持应用程序在firstground

每当我使用Intent.ACTION_CALL运行USSD

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

发给我的后台应用程序,并打开拨号界面上我的应用程序。

所以有可能没有前开拨号接口运行USSD代码。

谢谢。

+0

同样的问题有:http://stackoverflow.com/questions/5449464/calls-a-ussd-number-without-opening-the-phone-app-in-android – Plugie

回答

1

使用下面的代码:

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); 
} 
+2

我不明白为什么这个答案被接受。您的代码与OP编写的代码相同。你的代码只有更多的行。 –

相关问题