2010-09-24 69 views
3

我想以編程方式隱藏/顯示我的主叫號碼。我試圖在android文檔中找到它,但沒有運氣。也許你有什麼想法?android外撥主叫號碼 - 開/關

+0

一個想法隱藏或更換呼叫者ID將是使基於互聯網的呼叫,VOIP呼叫與操縱的ID。 – Skynet 2013-08-19 05:43:31

回答

4

我張貼的問題問這在谷歌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

1

來電顯示是網絡特定的,不是電話控制的。事實上,在某些移動網絡配置中,手機甚至不知道自己的電話號碼。

某些網絡支持發送激活/去激活呼叫者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

0

如果你想有一個快捷方式到額外通話設置,您可以使用App Cut並選擇GSM設置。它會在您的主屏幕上放置一個快捷方式。

2

如果#31#技巧可以滿足您的單個呼叫需求,那麼您可以添加一個廣播接收器,用於偵聽呼出通知並修改號碼以在撥號前包含#31#。 Android允許通過這種方式改變號碼。

只有當您的默認設置爲啓用來電顯示和您的網絡支持#31#並且您希望使用小部件將其關閉時纔有效。

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);