gpt4 book ai didi

android - 如何从 Android 的 USSD 代码中获取响应?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:28:38 25 4
gpt4 key购买 nike

我编写了一个使用 ussd 代码的应用程序。我想发送一个 ussd 请求,但我不知道如何获取数据并将其保存在字符串中。

示例代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button btn = (Button) findViewById(R.id.button1);

btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

String encodedHash = Uri.encode("#");
String ussd = "*141*1" + encodedHash;
startActivityForResult(new Intent("android.intent.action.CALL",
Uri.parse("tel:" + ussd)), 1);

}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

Toast.makeText(getApplicationContext(),
"USSD: " + requestCode + " " + resultCode + " ", 1).show();

if (requestCode == 1) {

if (resultCode == RESULT_OK) {
// String result=data.getStringExtra("result");
String dd = data.toString();
Toast.makeText(getApplicationContext(), dd, 1).show();
}

}

截图应用: enter image description here

enter image description here

如何解决我的问题?

最佳答案

使用 DIAL 或 CALL Intent 从自定义 Activity 中调用 USSD 代码是直接的,但监听返回的结果并不是因为 Android 没有适当支持在平台内拦截 USSD 调用,而是存在部分支持(尽管未记录)在 native 拨号器应用程序中。

首先,请查看 Android 源代码中的 PhoneUtils 类。该链接适用于 4.0.3,但我相信自 2.3 以来就存在这种部分支持。

具体来说,查看第 217 行,正在编写名为“com.android.ussd.IExtendedNetworkService”的 Intent 。因此,您需要做的是实现您自己的服务来响应该 Intent 。服务需要根据IExtendedNetworkService.aidl来实现这是 Android 框架的一部分。

aidl 公开了几个函数,但我们关心的是该服务中的 getUserMessage(text) 函数。文本是 USSD 调用返回的最终值。

注意事项:

  • 由于该服务由 PhoneUtils 绑定(bind),因此您需要在手机启动时启动该服务。这也意味着对服务的任何修改都需要重启手机。
  • 从 getUserMessage 返回 null 将禁止拨号器显示 USSD 结果,但没有办法完全隐藏拨号器。
  • 您还可以使用其他功能来更改通话过程中显示的文本。
  • 这似乎不适用于 USSD 提示(菜单),仅适用于最终结果。

在 github 上查看示例代码 here .

关于android - 如何从 Android 的 USSD 代码中获取响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com