我想以编程方式隐藏/显示我的主叫号码。我试图在android文档中找到它,但没有运气。也许你有什么想法?android外拨主叫号码 - 开/关
回答
我张贴的问题问这在谷歌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源代码可能是唯一的方法来找到答案,我还没有尝试过。
来电显示是网络特定的,不是电话控制的。事实上,在某些移动网络配置中,手机甚至不知道自己的电话号码。
某些网络支持发送激活/去激活呼叫者ID网络命令。在GSM中,这通常是#31#。它可以是永久的或每个呼叫的基础上。
- 永久请求网络隐藏所有呼叫的主叫方ID。
- 每个呼叫请求网络仅为该呼叫隐藏呼叫者ID。后者是通过在#31#中调用号码的前缀来实现的,例如调用#31#85432786426会呼叫85432786426隐藏调用者。
有些网络支持这两种网络,有些网络只支持其中之一,有些则不支持。试试你的运气,并尝试用#31#前缀拨号号码,看看它是否有效。
http://www.gsm-security.net/faq/gsm-caller-id-clip-clir.shtml
在你的链接中,我看到了CallerID数据的接收和传输。 * 31#是否标识我接到电话的隐藏号码?我想更详细地解释那里写的命令表。 – 2012-08-07 19:18:21
隐藏或替换来电显示的一个想法是进行基于互联网的呼叫,即带有操纵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);
- 1. android:拨打号码
- 2. 在Android的拨号环来电呼叫
- 3. 主叫电话号码
- 4. Android连接中的开始呼叫(非拨号)
- 5. android代码拨号暂停号码
- 6. 通过拨打号码启动应用程序,然后断开呼叫:Android
- 7. ANDROID预先拨打号码
- 8. Android如何在拨号中拨打包括“#”或“p”的呼叫?
- 9. 拨号在Android手机号码
- 10. 在Android中自动拨号号码
- 11. 查看Android拨号器中的号码
- 12. Twilio - 转移呼叫和显示拨号前拨打的电话号码
- 13. 在lync中启动呼叫后拨号号码
- 14. 拨打号码
- 15. 从Android拨号获取号码?
- 16. Android主号码
- 17. 星号传入呼叫DID问题(拨打的号码)
- 18. 通过应用拨号时阻止被叫号码
- 19. 从拨号盘主叫号码返回警告:“呼叫需要可以由用户拒绝许可”
- 20. Android。从拨号
- 21. 如何拨号以从拨号方案内发起呼叫?
- 22. NFC智能拨号拨打号码
- 23. 获取拨号在本机拨号android
- 24. twilio拨打号码
- 25. 如何在使用电话管理器的Android通话期间接收由主叫方拨打的号码
- 26. Android调用拨号
- 27. Android:拨打一个自定义号码,一旦拨打电话
- 28. 当呼叫进入和用户拨打号码时需要关闭服务
- 29. 我想在android中拨打号码吗?
- 30. 获取我拨打的号码Android
一个想法隐藏或更换呼叫者ID将是使基于互联网的呼叫,VOIP呼叫与操纵的ID。 – Skynet 2013-08-19 05:43:31