android外拨主叫号码 - 开/关

问题描述:

我想以编程方式隐藏/显示我的主叫号码。我试图在android文档中找到它,但没有运气。也许你有什么想法?android外拨主叫号码 - 开/关

+0

一个想法隐藏或更换呼叫者ID将是使基于互联网的呼叫,VOIP呼叫与操纵的ID。 – Skynet 2013-08-19 05:43:31

我张贴的问题问这在谷歌Android组,得到了在完全没有任何答案。我也看到了一些关于SO的其他问题,这些问题也没有答案(或没有答案)。

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

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

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

简而言之,看起来来电显示设置并不完全是“本地”的电话设置,并依赖与提供商的交互,并且无论出于何种原因,由于Android API不允许这样做被编程操纵。

我不知道这是否是“要做”清单上的东西对Android系统,或者是否有允许它做或其他一些原因,法律/安全影响未来的版本。无论情况如何,我还没有找到任何人能够解释为什么没有TelephonyManager(例如)简单地切换此方法。

编辑:没有运气获得附加设置AlertDialog与标准的API。

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

android.provider.Settings对于其他设置页面还有其他类似的ACTION,但没有一个用于'Call',不介意调用 - >其他设置,AlertDialog没有任何东西允许您选择隐藏/显示外发来电显示。

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

+0

如何拉起其他设置AlertDialog,这对我来说足够好。 – hhafez 2010-12-13 22:08:53

+0

@hhafez:看到我的编辑结束了我的回答 - 我将在评论中回应,但用完了角色。 – Squonk 2010-12-13 23:56:15

+0

@hhafez:只是为了表示感谢,奖励我的赏金。解决这个问题仍然是我要做的事情 - 如果我找到任何进一步的信息,我会通过它。 – Squonk 2010-12-14 22:53:13

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

某些网络支持发送激活/去激活呼叫者ID网络命令。在GSM中,这通常是#31#。它可以是永久的或每个呼叫的基础上。

  1. 永久请求网络隐藏所有呼叫的主叫方ID。
  2. 每个呼叫请求网络仅为该呼叫隐藏呼叫者ID。后者是通过在#31#中调用号码的前缀来实现的,例如调用#31#85432786426会呼叫85432786426隐藏调用者。

有些网络支持这两种网络,有些网络只支持其中之一,有些则不支持。试试你的运气,并尝试用#31#前缀拨号号码,看看它是否有效。

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

+0

在你的链接中,我看到了CallerID数据的接收和传输。 * 31#是否标识我接到电话的隐藏号码?我想更详细地解释那里写的命令表。 – 2012-08-07 19:18:21

+0

隐藏或替换来电显示的一个想法是进行基于互联网的呼叫,即带有操纵ID的VOIP呼叫。 – Skynet 2013-08-19 05:43:06

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

如果#31#技巧可以满足您的单个呼叫需求,那么您可以添加一个广播接收器,用于侦听呼出通知并修改号码以在拨号前包含#31#。 Android允许通过这种方式改变号码。

只有当您的默认设置为启用来电显示和您的网络支持#31#并且您希望使用小部件将其关闭时才有效。

我已设法获得其他呼叫设置对话框。说明如下:

虽然它看起来像是设置的一部分,实际上它是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);