Чому так багато додатків вимагають дозволу на читання стану телефону та посвідчення особи?


88

Чому так багато додатків вимагають дозволу на читання стану телефону та посвідчення особи ?. Конкретно:

Phone calls
   read phone state and identity

Наприклад, Quickpedia - це портал Вікіпедії, але хоче отримати доступ до телефону. Яке пояснення цьому?

введіть тут опис зображення


Насправді це не так, адже "так, ця програма має цей дозвіл надсилати смс та дзвонити преміум-номеру за спиною", - це припускають люди . @ Крістіан відповідь нижче вдарив цвях по голові! Це є законним у багатьох випадках, і досить часто дияволи зазвичай забувають про зменшення дозволів (можливо, про затримку з перших днів розробки програми).
t0mm13b

1
@ t0mm13b Я не думаю, що там немає великого попиту на зменшені дозволи за межами технік та конфіденційності (включаючи самостійно). Тож якщо виробники додатків просто встановлять норму вимагати повного набору дозволів, то споживачі будуть вважати, що багато дозволів є нормальними для будь-якого додатка. Уряд не чинить на них тиску на використання мінімальних дозволів, і поки ринок не тисне на них. Тобто додатки не вимагають великих витрат, щоб вимагати великої кількості дозволів.
user29020

Відповіді:


59

Це дозволяє додатку зчитувати унікальний ідентифікатор (ідентифікатор телефону на ім’я IMEI ), пов’язаний з вашим телефоном.

Отже, це може допомогти із захистом від копіювання або спробою відстежити кількість користувачів.


3
Дивіться цей SO питання про отримання унікального ідентифікатора телефону, виглядає як ( в даний час) найнадійнішим способом для розробників , щоб отримати унікальний ідентифікатор з телефону вимагає Read Phone дозволу держави stackoverflow.com/questions/2785485 / ...
GAThrawn

40

Є ще одна причина цього, ніж унікальний ідентифікатор. Я б здогадався, що половина програм взагалі не отримує доступу до цих значень. Проблема полягає в тому, що для нижчої версії до Android 1.5 цього дозволу не існує. Усі могли отримати доступ до цих значень, не вимагаючи чогось.

Тому якщо ви створите додаток, сумісний з 1.5, цей дозвіл буде автоматично додано для імітації нижчої безпеки Android 1.5, тому ви можете ігнорувати цей дозвіл у більшості випадків, оскільки це, як правило, є лише проблемою сумісності.


2
Те саме відбувається з доступом до SD-карти.
Денис Ніколаєнко

1
Це правда - але не пояснюється, чому програми для версії 2.x і вище так часто хочуть.
Izzy

19

Причина полягає в тому, що Android 1.5 і новіші версії не вимагали від програми спеціально запитувати ці дозволи та автоматично їх надавали. Оскільки Android 1.6, програма має спеціально запитувати ці дозволи. Однак якщо ви вказали, що ваша програма може працювати на пристроях з Android 1.5 і менше, то цей дозвіл додається до програми за замовчуванням, і ринок показує, що цей дозвіл вимагається програмою.

Отже, підсумовуючи, програма може насправді не отримувати доступ до вашого "стану телефону та посвідчення особи", але якщо розробник вказав, що його / її програма може працювати на пристроях з 1,5 або меншою мірою, тоді цей дозвіл буде показаний.


Чи є у вас посилання на будь-яку документацію, що показує це?
GAThrawn


developer.android.com/reference/android/os/… дає повний перелік ідентифікаторів цільової версії та зміни дозволів (серед інших відмінностей) між ними.
Стюарт

Правильно. Але, мабуть, уже не "цікаво", оскільки програми на 1,5 і нижче потрапляли досить рідко :)
Izzy

18

Це питання мене хвилює вже досить давно. Тому зараз, нарешті, я вирішив дійти до низу питання.

Playstore є додаток під назвою permission.READ_PHONE_STATE , який запитує в READ_PHONE_STATEякості єдиного дозволу, і нічого не робить , ніж друк всіх даних , які він може отримати доступ з або без його використання. Я встановив це на своєму LG Optimus 4X , будучи вкоріненим на Android 4.0.3, і відкликав дозвіл за допомогою LBE. Результати, де досить цікаві, як показують наступні скріншоти:

Знімок екрана 1 Знімок екрана 2 Знімок екрана 3
Інформація, зібрана дозволом програми.READ_PHONE_STATE (натисніть зображення для більших варіантів)

Як ви легко бачите, навіть деяка інформація, яка була недоступною без дозволу, була вільно доступною: номер моєї поштової скриньки (зауваження: Так, це правильний; у мого провайдера це ярлик під час набору номера з вашого власного пристрою, тому я можу вільно показуйте його;) В кінці першого екрана ви бачите:

  • CALL_STATE_IDLE. Тож жоден телефонний дзвінок не входить, не йде або триває. Жоден додаток не потребує цього дозволу, щоб "фонувати" себе при вхідних дзвінках.

Можна навіть побачити, чи активні дані мобільного зв’язку ( DATA_DISCONNECTED; я був у WiFi, коли робив знімки екрана, як ви бачите на панелі сповіщень), у якій країні ви перебуваєте, у вашого постачальника (включаючи деякі технічні дані щодо нього), чи у вас SIM-карта або в роумінгу.

Єдине , що НЕ доступний , отже , ідентифікують дані: IMEI, SIMID, IMSI і свій номер телефону.

Висновок: Цей дозвіл потрібен лише для ідентифікації, нічого іншого.

Чому тоді потрібна стільки додатків?

  • Для рекламних модулів, швидше за все, 1
  • Тому що дев подумав, що йому це потрібно (на що вказують деякі відповіді тут) 2
  • Оскільки програма, про яку йдеться, розроблена для (також) роботи на Android 1.5 і нижче (це легко дізнатися, як це вказано в Google Play ).

Ймовірність саме в такому порядку, ІМХО.


1 Примітка від публікації Дана у чаті :

Зараз політика Google Play забороняє додаткам отримувати ваш IMEI для ідентифікації вас для рекламних цілей. Усі бібліотеки оголошень уже оновлено, щоб використовувати наданий Google-Play-Services "рекламний ідентифікатор", тому будь-які, які все ще використовують IMEI для цієї мети, повинні бути повідомлені Google.

Оскільки користувачеві важко сказати, для чого додаток використовує IMEI, вам слід попросити розробника спочатку пояснити.


2 Інший розробник просто вказав на тонку різницю: хоча дозвіл не потрібен для читання поточного стану виклику (як я вже вказував), можливо, знадобиться зареєструвати слухача , щоб отримувати сповіщення про зміни дзвінка. стан (див. Визначення вхідних та вихідних телефонних дзвінків на Android ). Хоча, здається, є засоби для автоматичного вирішення цього питання, коли система дзвонить onPause, це може бути не завжди підходить: подумайте про свій будильник. Можливо, ви не хочете, щоб це було автоматично зупинено під час вхідного дзвінка, особливо не тоді, коли для вашого профілю встановлено, що гучність дзвінка "вимкнено".


3 Знову виправлення від Dan : Ви отримуєте додатковий дозвіл за замовчуванням лише у тому випадку, якщо "цільова" версія програми становить 1,5. Якщо ви націлюєте на більш пізню версію, але ваша мінімальна версія 1,5, дозвіл не буде додано автоматично.


Оновлення

  1. Цікаво, що існує відкрита проблема (21504), яку слід розділити READ_PHONE_STATEна те, що потрібно для: a) виявлення вхідних дзвінків і пов'язаних з ними (телефонія), а також другий дозвіл на ідентифікаційні дані (IMEI, IMSI тощо). Відкрито 11/2011, і досі не працює. Позначте зірочкою, якщо цікаво :)
  2. І так, є спосіб досягти того ж (виявляючи вхідні дзвінки) без з READ_PHONE_STATEдозволу, як , наприклад , зазначив Арно Welzel . Оскільки вхідний телефонний дзвінок спричинить дзвінок, ця подія може бути використана onAudioFocusChange(), і це не вимагає спеціального дозволу: якщо це буде викликано, додаток може перевірити CallState (знову ж таки, без спеціального дозволу), щоб побачити, чи є Вхідний виклик.

Я думаю, вам потрібно видалити ту частину, де ви говорите, що жоден додаток не потребує цього дозволу, щоб фоновувати вхідні дзвінки. Ви вже зазначаєте це у виносці 2, але це суперечливо. Дивіться також developer.android.com/reference/android/telephony/…
Mikel

@Mikel Ви частково праві. Використання цього дозволу - це найпростіший спосіб виконання завдання, але це не єдиний. Це можна зробити без того, як зазначав якийсь розробник (це було в чаті? На жаль, я втратив посилання). Як і в багатьох випадках, використання API Google робить деякі речі набагато простішими (в той час як це також пов'язує ваш додаток з екосистемою Google). Я не розробник, тому не можу сказати, скільки ще працюватиме інший спосіб.
Іззі

Я ще не розробник Android, і я погоджуюся, це здається, що деякі випадки використання охоплені програмою OnPause (). Сказання, що "жоден додаток не потребує цього дозволу" звучить для мене неправильно. Це звучить більше як "деяким додаткам може знадобитися цей дозвіл", наприклад, якщо вони працюють у фоновому режимі. Також зауважте, що прийом наміру трансляції, безумовно, повинен бути ефективнішим, ніж повторне опитування стану телефону.
Мікель

@Mikel Дивіться моє оновлення. І так, "взагалі немає потреби" може бути трохи перебільшеним. Можливо, у 0,5% від усіх поточних запитів це може знадобитися, без альтернативи, доступної #D І знову: так, про onPause()що ми обговорювали в чаті для цього! Але використання onAudioFocusChange()може бути навіть менш накладним (невелике опитування тоді може бути ігнорувати).
Іззі

10

Багато видавців оголошень використовують цей дозвіл, щоб отримати ідентифікатор телефону для всіляких цілей відстеження. Є й інші способи отримати унікальний ідентифікатор, але, на жаль, вони старіші в старих версіях Android (історія складніша, див., Наприклад, https://stackoverflow.com/questions/2785485/is-there-a-unique-android- ідентифікатор пристрою або http://android-developers.blogspot.com/2011/03/identifying-app-installations.html для більш повної історії).

Отже, якщо програма використовує рекламу, є велика ймовірність, що самому додатку не потрібен дозвіл READ_PHONE_STATE, як це робить лише постачальник реклами.


1
Ось ІМХО головне питання, що стоїть за цим усім! Добре розібрався.
Izzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.