Почему так много приложений требуют разрешения на чтение состояния и личности телефона?

Почему так много приложений требуют разрешения на чтение состояния и идентификации телефона ?. В частности:

Phone calls
   read phone state and identity

Например, Quickpedia - это портал Википедии, но хочет получить доступ к телефону. Каково объяснение этого?

введите описание изображения здесь>> </p></body></html>

80 голосов | спросил goldsz 18 J000000Sunday10 2010, 05:52:17

5 ответов


56

Он позволяет App читать уникальный идентификатор (телефонный идентификатор с именем IMEI ), который связан с вашим телефоном.

Поэтому он может помочь с защитой от копирования или попыткой отслеживать количество пользователей.

ответил 18 J000000Sunday10 2010, 17:10:20
37

Для этого есть другая причина, чем уникальный идентификатор. Я предполагаю, что половина приложений вообще не имеет доступа к этим значениям. Проблема в том, что для более низкой версии до Android 1.5 это разрешение не существует. Каждый может получить доступ к этим значениям без каких-либо запросов.

Поэтому, если вы создаете приложение, совместимое с 1.5, это разрешение будет автоматически добавлено для эмуляции более низкой безопасности Android 1.5 из-за этого вы могли бы игнорировать это разрешение в большинстве случаев, потому что оно имеет тенденцию быть просто проблемой совместимости .

ответил 5 PM00000020000004031 2010, 14:09:40
18

Причина в том, что Android 1.5 и более ранние версии не требовали, чтобы приложение специально запрашивало эти разрешения и автоматически предоставляло их. Начиная с Android 1.6, эти разрешения должны быть специально запрошены приложением. Однако, если вы укажете, что ваше приложение может работать на устройствах с Android 1.5 и менее, то это разрешение добавляется в приложение по умолчанию, и на рынке показано, что разрешение запрашивается приложением.

Таким образом, приложение может фактически не получать доступ к вашему «состоянию и идентификатору телефона», но если разработчик указал, что его приложение может запускаться на устройствах с 1,5 или менее, это разрешение будет показано.

ответил 5 SunEurope/Moscow2010-12-05T10:37:51+03:00Europe/Moscow12bEurope/MoscowSun, 05 Dec 2010 10:37:51 +0300 2010, 10:37:51
16

Этот вопрос беспокоил меня довольно давно. Итак, теперь, наконец, я решил разобраться в сути проблемы.

В PlayStore есть приложение под названием разрешение.READ_PHONE_STATE , который запрашивает READ_PHONE_STATE как единственное разрешение и не делает ничего, кроме как распечатывать все данные, с которыми он может обращаться с использованием или без него. Я установил это на моем LG Optimus 4X , внедренном на Android 4.0.3 Android, и отозвал разрешение с помощью LBE. Результаты, которые довольно интересны, как показывают следующие скриншоты:

 Снимок экрана 1  Снимок экрана 2 Снимок экрана 3
Информация, собранная приложением permission.READ_PHONE_STATE (щелкните изображения для более крупные варианты)

Как вы можете легко видеть, даже некоторая информация, которую Dev, хотя и недоступная без разрешения, была свободно доступна: мой номер почтового ящика (примечание: Да, это правильно, с моим провайдером это ярлык при наборе номера с вашего собственного устройства, поэтому я могу свободно отображать его;) В конце первого снимка экрана вы видите:

  • CALL_STATE_IDLE. Таким образом, звонок не поступает, не отправляется или не выполняется. Никакое приложение не нуждается в этом разрешении для «фона» при входящих вызовах.

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

Единственными доступными not являются идентификация данных: IMEI, SIMID, IMSI и ваш собственный номер телефона.

Заключение: Это разрешение требуется только для целей идентификации, ничего больше.

Почему так много приложений нужно?

  • Для рекламных модулей, скорее всего, 1
  • Поскольку dev думал , он нуждается в нем (как указано в некоторых ответах здесь) 2
  • Потому что приложение, о котором идет речь, предназначено для (также) запуска на Android 1.5 и ниже (легко узнать, как это указано в Google Play ).

Вероятности в этом порядке, ИМХО.


1 Примечание Запись Дэна в чате :

  

Теперь политика Google Play запрещает приложениям получать IMEI, чтобы идентифицировать вас в рекламных целях. Теперь все рекламные библиотеки были обновлены для использования «рекламного идентификатора», предоставляемого Google Play-Services, поэтому любой, кто по-прежнему использует IMEI для этой цели, должен быть отправлен в Google.

Поскольку пользователю сложно сообщить, для чего используется приложение IMEI, попросите разработчика сначала объяснить.


2 Другой разработчик просто указал мне на тонкую разницу: если для read не требуется разрешение на просмотр текущего статуса вызова (как я уже указывал), это может потребоваться зарегистрировать прослушиватель , чтобы уведомил о изменениях статуса вызова (см .: Обнаружение входящих и исходящих телефонных звонков на Android ). Хотя кажется, что есть средства для обработки этого автоматически, когда система вызывает onPause, что может не всегда быть подходящим: подумайте о своем будильнике. Возможно, вы не захотите, чтобы это автоматически остановилось при входящем вызове - особенно если ваш профиль не настроен на громкость звонка «отключен».


3 Снова исправление от Dan : Только вы получите дополнительное разрешение по умолчанию, если «целевая» версия вашего приложения - 1,5. Если вы настроите таргетинг на более позднюю версию, но ваша минимальная версия равна 1,5, вы не получите автоматически добавленное разрешение.


Обновление

  1. Интересно, что существует открытая проблема (21504) для разделения READ_PHONE_STATE в том, что необходимо для) обнаружения входящих вызовов и связанной с ними (телефонии), и второго разрешения для идентификацииподробности (IMEI, IMSI и т. д.). Открыт 11/2011, все еще не работал. Назовите его, если хотите:)
  2. И да, есть способ добиться того же (обнаружения входящих вызовов) без разрешения READ_PHONE_STATE, например. отметил Арно Вельцель . Когда входящий телефонный звонок вызовет звонок, , что может использоваться с onAudioFocusChange(), который не требует специального разрешения: если это вызвано этим, приложение может проверьте CallState (опять же, без специального разрешения), чтобы узнать, есть ли входящий вызов.
ответил Izzy 8 FebruaryEurope/MoscowbSat, 08 Feb 2014 01:39:11 +0400000000amSat, 08 Feb 2014 01:39:11 +040014 2014, 01:39:11
9

Многие издатели используют это разрешение для получения идентификатора телефона для всех видов отслеживания. Есть и другие способы получить уникальный идентификатор, но, к сожалению, они устарели в старых версиях 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, только поставщик рекламы.

ответил Kasper Peeters 23 FriEurope/Moscow2011-12-23T00:37:10+04:00Europe/Moscow12bEurope/MoscowFri, 23 Dec 2011 00:37:10 +0400 2011, 00:37:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132