題:
為什麼這麼多應用程序需要讀取電話狀態和身份的權限?
goldsz
2010-07-18 06:52:18 UTC
view on stackexchange narkive permalink

為什麼這麼多的應用程序需要讀取電話狀態和身份的權限?具體來說:

 電話呼叫讀取電話狀態和身份 

例如,Quickpedia是Wikipedia門戶,但希望訪問電話。這有什麼解釋?

enter image description here

它不是真的,因為“是的,這個應用程序具有發送短信並在您的背後打個電話的權限”,這就是人們的“假設”。下面的@Christian's答案已被打中!在許多情況下,這是合法的,而且開發人員常常會忘記放棄權限(也許是從應用程序開發初期開始的保留)。
@t0mm13b我認為,對於技術人員和隱私怪胎(包括自備產品)以外的減少許可的需求不多。因此,如果應用程序製造商只是要求全部權限的“規範”,那麼對於任何應用程序,消費者都會認為很多權限都可以。政府沒有向他們施加壓力,要求他們使用最低權限,到目前為止,市場沒有向他們施加壓力。即應用需要大量權限幾乎沒有成本。
五 答案:
#1
+59
Christian
2010-07-18 18:10:20 UTC
view on stackexchange narkive permalink

它允許應用程序讀取與您的手機關聯的唯一ID(名為 IMEI的手機標識符)。

因此,它可以幫助進行複制保護或嘗試跟踪用戶數量。

看到有關獲取電話唯一ID的問題,這似乎是開發人員從電話中獲取唯一ID的(當前)最可靠的方法,需要“讀取電話狀態”權限http://stackoverflow.com/questions/2785485 / is-there-a-unique-android-device-id / 2853253#2853253
#2
+40
Janusz
2010-08-05 15:09:40 UTC
view on stackexchange narkive permalink

除了唯一ID,還有另一個原因。我猜想一半的應用程序根本不會訪問這些值。問題是對於不超過Android 1.5的較低版本,此權限不存在。每個人都可以訪問這些值而無需任何請求。

因此,如果您創建與1.5兼容的應用,則會自動添加此權限以模擬Android 1.5的較低安全性,因為在大多數情況下,您可能會忽略此權限,因為該權限通常是只是兼容性問題。

SD卡訪問也是如此。
沒錯-但這並不能解釋為什麼2.x及更高版本的應用如此頻繁地想要它。
#3
+19
Adil
2010-12-05 13:37:51 UTC
view on stackexchange narkive permalink

原因是Android 1.5及更低版本不需要應用程序專門請求這些權限並自動授予它們。從Android 1.6開始,這些權限必須由應用明確要求。但是,如果您指定您的應用程序可以在Android 1.5及更低版本的設備上運行,則默認情況下該權限會添加到該應用程序,並且市場會顯示該權限是應用程序所要求的。

因此總結,該應用程序可能實際上未在訪問您的“電話狀態和身份”,但是如果開發人員指定他/她的應用程序可以在1.5或更低版本的設備上運行,則會顯示該權限。

您是否有任何指向顯示此內容的文​​檔的鏈接?
@GAThrawn:請參閱http://groups.google.com/group/android-developers/browse_thread/thread/6d2fe71f4690ae22/e8ebe400cbb73feb和http://code.google.com/p/android/issues/detail?id=4101
http://developer.android.com/reference/android/os/Build.VERSION_CODES.html提供了目標版本標識符的完整列表以及它們之間的權限更改(包括其他區別)。
對。但是可能不再“有趣”了,因為1.5及以下版本的應用程序變得非常稀有:)
#4
+18
Izzy
2014-02-08 03:39:11 UTC
view on stackexchange narkive permalink

這個問題困擾了我很多時間。因此,現在,終於,我決定深入探討問題。

Playstore的應用程序名為 permission.READ_PHONE_STATE,它要求 READ_PHONE_STATE 作為唯一許可,除了打印出可以使用或不使用它而可以訪問的所有數據外,別無其他。我已將其安裝在我的 LG Optimus 4X 上,該版本植根於股票Android 4.0.3,並使用LBE撤消了許可。結果非常有趣,如以下屏幕快照所示:

Screenshot 1 Screenshot 2 Screenshot 3
應用程序 權限所收集的信息。READ_PHONE_STATE (單擊圖像可獲得更大的變體) sup>

您可以輕鬆地看到,即使是未經許可也無法訪問開發人員的一些信息,也可以自由訪問:我的郵箱號碼(注:是的,這是正確的;使用提供程序是從您自己的設備撥號時的快捷方式,因此我可以自由顯示它;)在第一個屏幕快照的末尾,您將看到:

  • CALL_STATE_IDLE 。因此,沒有來電,去電或通話正在進行。

甚至可以查看移動數據是否處於活動狀態( DATA_DISCONNECTED ;當我在WiFi上時,截取屏幕快照(如通知欄所示),您所在的國家/地區,提供商(包括有關他的一些技術數據),您是否擁有SIM卡或是否正在漫遊。

唯一可訪問的就是標識數據:IMEI,SIMID,IMSI和您自己的電話號碼。

結論:僅出於識別目的,才需要此權限。

為什麼那麼多的應用程序需要它?

  • 對於廣告模塊,很可能 1 sup>
  • 因為開發人員想法他需要它(如此處的一些答案所指出) 2 sup>
  • 因為所涉及的應用程序旨在(也可以在Android 1.5及更低版本的Android上運行(很容易找到,因為它列在 Google Play 上)。

按類似的順序,恕我直言。 p>


1 sup> Dan在聊天中的帖子的註釋:

Google Play政策現在禁止應用獲取您的IMEI出於廣告目的識別您的身份。所有廣告庫現在都已更新,可以使用Google Play服務提供的“廣告ID”,因此任何仍使用IMEI的廣告庫都應報告給Google。

由於用戶很難知道應用程序將IMEI用於什麼用途,因此您應該先要求開發人員進行解釋。


2 sup>另一個開發人員剛剛指出了我有一個細微的差別:雖然不需要讀取當前通話狀態的權限(正如我所指出的那樣),但是可能需要註冊一個 listener 更改通話狀態時被通知(請參閱:在Android上檢測呼入和呼出電話)。儘管在系統調用 onPause 時似乎可以自動處理此問題,但這可能並不總是適用:想想您的鬧鐘。您可能不希望在來電時自動停止-尤其是當您的個人資料設置為鈴聲音量“靜音”時。


3 sup>還是Dan的更正:僅當您應用的“目標”版本為1.5時,您才能獲得默認的額外權限。如果您以更高版本為目標,但最小版本為1.5,則不會自動添加權限。


更新

  1. 有趣的是,有一個未解決問題(21504) READ_PHONE_STATE 劃分為以下內容:a)檢測來電和相關電話(電話),並獲得第二個許可識別詳細信息(IMEI,IMSI等)。打開11/2011,仍然沒有工作。如果有興趣可以給它加註星標:)
  2. 是的,有一種方法可以實現相同的(檢測來電)而無需 READ_PHONE_STATE 權限,例如亞諾·韋爾澤爾指出。由於來電會觸發鈴聲,因此 that 事件可以與 onAudioFocusChange()一起使用,該事件不需要任何特殊權限:如果以此觸發,則該應用程序可以檢查 CallState (同樣,無需任何特殊許可)以查看是否有來電。
  3. ol>
我認為您需要刪除您說沒有應用需要此權限作為來電背景的部分。您已經在腳註2中指出了這一點,但這是矛盾的。另請參見http://developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED
@Mikel您的觀點是正確的。使用此權限是完成任務的“最簡單”方法,但這不是唯一的方法。正如一些開發人員所指出的,它可以不做(是在聊天中嗎?不幸的是,我丟失了鏈接)。與許多事情一樣,使用Google的API使某些事情更容易實現(同時還將您的應用程序綁定到Google生態系統)。我不是開發人員,所以我無法說出另一種方法意味著還有多少工作要做。
我也不是Android開發人員,我同意聽起來像onPause()涵蓋了一些用例。只是說“沒有應用需要此許可”對我來說是錯誤的。聽起來更像是“某些應用可能需要此權限”,例如如果它們在後台運行。還要注意,接收廣播的意圖肯定比重複輪詢電話狀態要有效。
@Mikel看到我的更新。是的,“一點都不需要”可能有點誇張。也許在所有當前請求的0.5%中,確實確實需要它,沒有可用的替代方法#D再一次,是的:`onPause()`是我們在聊天中討論的內容!但是使用onAudioFocusChange()可能甚至會減少開銷(那麼小的輪詢可能就可以忽略了)。
#5
+10
Kasper Peeters
2011-12-23 02:37:10 UTC
view on stackexchange narkive permalink

許多廣告發布商都使用此權限來獲取電話ID,以用於各種跟踪目的。還有其他獲取唯一ID的方法,但不幸的是,它們在較舊的Android版本中存在錯誤(故事更複雜,請參見例如 https://stackoverflow.com/questions/2785485/is-there-a-unique -android-device-id http://android-developers.blogspot.com/2011/03/identifying-app-installations.html查看完整的故事)。

因此,如果應用程序使用廣告,則很有可能該應用程序本身實際上不需要READ_PHONE_STATE權限,只有廣告提供者需要。

***這是***恕我直言,這背後的主要問題!好想。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...