【问题标题】:Is there a means to forcefully autodial special numbers on Android?有没有办法在 Android 上强制自动拨打特殊号码?
【发布时间】:2015-01-21 21:50:10
【问题描述】:

我一直在研究一个 android 应用程序概念,其中当用户通过应用程序中的快捷方式启动服务时,应用程序必须自动拨打一些特殊的 USSD 代码,以便启动用户感兴趣的某些电信服务.

我发现的问题是,当应用程序尝试自动拨打此类短代码或 USSD 号码时,手机的操作系统(或者是呼叫意图)不会自动拨号,而是向用户显示使用拨号盘中的代码/号码,因此用户必须手动发起呼叫 - 这有点违背了我允许用户一键启动服务的意图 - 快捷方式。

目前,我是这样发起这些调用的:

            intent = new Intent(Intent.ACTION_DIAL);

            intent.setData(Uri.parse("tel:" + number.trim()));

            try {
                activity.startActivity(intent);
            } catch (Exception e) {
                Log.d(Tag, e.getMessage());
            }

有趣的是,像 +256772777000 这样的号码会自动拨号,让用户自动加入通话,但像 911、*112#、*1*23# 等号码/代码则不会。

那么,我需要做些什么不同的事情,或者这根本不可能?

更新

实际上,查看我正在自动拨打用户指定号码的另一个应用程序,上述代码尝试自动拨打 ussd 代码的问题在于,我没有使用intent.ACTION_CALL,而是使用intent.ACTION_DIAL - 这绝对是只是提示用户要拨打的号码,而不是直接拨打电话。当我修复它时,该应用程序现在可以按预期工作。请参阅下面的答案...

欢迎提供代码示例。

【问题讨论】:

  • Android 的指导设计理念之一是,您不能做任何可能花费用户金钱或损害他们隐私的事情。如果您完全可以通过 Java API 进行拨号,那么您需要以 root 身份进行拨号。
  • 你确定当你使用像“+256772777000”这样的号码时,Android是自动拨号的吗?我复制粘贴了您的代码,但它只显示拨号盘,我必须手动显式拨打电话。同样的内容也写在关于 ACTION_DIAL 的 Android 文档中:这显示了一个带有正在拨打的号码的 UI,允许用户明确发起呼叫。
  • 我猜你的意思是 ACTION_CALL?
  • @AADTechnical,当然。我也刚刚意识到这一点,并查看了我的旧代码,确认它适用于 USSD :-) 不过谢谢。

标签: android phone-call ussd


【解决方案1】:

实际上,尽管有些人声称 Android 会阻止此类功能。当我查看我的一个自动拨打用户指定号码的旧应用程序中的代码时,我发现解决方案是:

            intent = new Intent(Intent.ACTION_CALL);

            intent.setData(Uri.parse("tel:" + number.trim()));

            try {
                activity.startActivity(intent);
            } catch (Exception e) {
                Log.d(Tag, e.getMessage());
            }

这按预期工作 - 当上述代码运行时,USSD 代码会自动拨号。使用此方法时唯一需要注意的重要事项是,您必须在清单中添加以下权限:

    <uses-permission android:name="android.permission.CALL_PHONE" />

因此,正如我在问题更新中指出的那样,我原来的方法的问题是使用intent.ACTION_DIAL 而不是intent.ACTION_CALL

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多