android出站呼叫者ID - 开/关

时间:2010-09-24 14:48:00

标签: android gsm

我想以编程方式隐藏/显示我的活动中的来电显示。我试图在Android文档中找到它,但没有运气。也许你有任何想法?

5 个答案:

答案 0 :(得分:4)

我在Android Google小组上发布了一个问题,并且完全没有答案。我还看到了关于SO的其他几个问题,这些问题也没有答案(或没有答案)。

我得出的结论是,这根本不可能。我的理由是......

如果我去设置 - >通话 - >其他设置,我看到一个AlertDialog,它有一个HeaderTitle为'Call settings',我看到一个循环进度指示器和一条消息'读取设置......'。

在我看来,我的手机正在访问我的手机/网络提供商。生成的“选择器”对话框为我提供了“网络默认”,“隐藏号码”和“显示号码”的选项,当我做出选择时(或者即使我只是'取消'对话框),我得到另一个循环进度的AlertDialog指示消息“正在更新设置...”。

简而言之,似乎来电显示设置并非完全是手机设置的“本地”,而是依赖于与提供商的互动,无论出于何种原因,Android API都不允许这样做以编程方式操纵。

我不确定这是针对未来Android版本的“待办事项”列表中的内容,还是在允许其完成或其他原因存在法律/安全方面的影响。无论情况如何,到目前为止我还没有找到任何人能够解释为什么TelephonyManager(例如)没有方法来简单地切换它。

编辑:使用标准API获取附加设置AlertDialog也没有运气。

我说的原因是可以拉出设备的“设置”的各个部分,例如,在我的一个应用程序中,我在传递给startActivity的Intent的构造函数中使用android.provider.Settings.ACTION_WIRELESS_SETTINGS ()。这将打开“设置”页面,启用/禁用Wi-Fi,移动互联网和蓝牙。

android.provider.Settings有其他类似的ACTION用于其他设置页面,但是甚至没有一个用于'Call',更别提Call - > AlertDialog的其他设置和任何内容都不允许您选择隐藏/显示传出的来电显示。

如果可以这样做,那么它必须是一个未记录的API,除非我完全错过它(我花了很长时间看)。我怀疑检查Android源代码可能是找到答案的唯一方法,我还没有尝试过。

答案 1 :(得分:3)

我设法获得了附加呼叫设置对话框。说明如下:

虽然看起来它是“设置”的一部分,但实际上它是Native PhoneApp的一部分。如果您查看PhoneApp的AndroidManifest.xml,您会看到Activity GsmUmtsAdditionalCallOptions已为android.intent.action.MAIN定义了IntentFilter。

所以,我检查过的代码在几部手机上正常工作:

Intent additionalCallSettingsIntent = new Intent("android.intent.action.MAIN");
ComponentName distantActivity = new ComponentName("com.android.phone", "com.android.phone.GsmUmtsAdditionalCallOptions");
additionalCallSettingsIntent.setComponent(distantActivity);
startActivity(additionalCallSettingsIntent);

答案 2 :(得分:2)

如果#31#技巧可以满足您对单个呼叫的需求,那么您可以添加一个广播接收器来侦听呼出通知并修改号码,以便在拨号之前包含#31#。 Android允许在此过程中更改号码。

仅在默认情况下启用来电显示和网络支持#31#并且您想要使用小部件将其关闭时才有效。比如说。

答案 3 :(得分:1)

来电显示是网络特定的,而不是手机控制的内容。事实上,在某些移动网络配置中,手机甚至不“知道”自己的电话号码。

某些网络支持发送激活/取消激活来电显示网络命令。在GSM中,这通常是#31#。它可以是永久性的,也可以是每次通话。

  1. 永久请求网络隐藏所有呼叫的来电显示。
  2. 每次呼叫请求网络仅为该呼叫隐藏呼叫者ID。后者是通过为#31#调用的数字加前缀来实现的,因此例如调用#31#85432786426将调用85432786426隐藏调用者。
  3. 有些网络支持两者,有些只支持其中一种,有些则不支持。试试你的运气,尝试用#31#作为前缀号码的前缀,看看它是否有效。

    http://www.gsm-security.net/faq/gsm-caller-id-clip-clir.shtml

答案 4 :(得分:0)

如果您想要其他通话设置的快捷方式,可以使用App Cut并选择GSM设置。它会在主屏幕上放置一个快捷方式。