Android разрешения: телефонные звонки: читать состояние телефона и идентичность
мое приложение для android не имеет ничего общего с телефонными звонками, но я вижу, что когда я устанавливаю отладочную сборку на своем тестовом устройстве, для нее требуются разрешения "телефонные звонки: Чтение состояния и идентификации телефона". (Я не упоминаю об этом в AndroidManifest.xml
).
Я хотел бы иметь минимально возможные разрешения, и интересно, если кто-нибудь знает, как избавиться от этого? Я прокомментировал часть, где я записывал некоторые вещи из Build.MODEL
,Build.VERSION.*
и т. д. Я прокомментировал ту часть, где я был обнаружение альбомной / портретной ориентации, думая, что это может быть "состояние телефона". Но ни один из них, казалось, не удалил это требуемое разрешение.
Я нашел этот отчет об ошибке:http://code.google.com/p/android/issues/detail?id=4101 но он помечен как работающий по назначению с примечанием о правильности разрешений с рынка, но не иначе. Это опыт других людей? (Я бы не хотел публиковать на рынке только для того, чтобы проверить это.) В противном случае, кто-нибудь знает, есть ли API, который я могу избежать вызова, чтобы мое приложение не нуждалось в этом разрешении?
спасибо!
2 ответа:
(отвечая на свой собственный вопрос в случае, если кто-то еще сталкивается с этой проблемой и ищет ее.)
копаться в PackageParser.java в исходнике android, я узнал, что система будет автоматически назначать
android.permission.WRITE_EXTERNAL_STORAGE and android.permission.READ_PHONE_STATE
для любого приложения, которое объявляет targetSdk версии менее 4 (пончик). Для этого должна быть причина совместимости, возможно, приложения, ориентированные на более старые версии, могут предположить, что у них есть эти разрешения, не объявляя их явно. Итак, если вы не хотите, чтобы эти разрешения были добавлены в ваше приложение неявно, добавьте раздел, подобный следующему в AndroidManifest.xml
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" />
вот и все.
удачи, -Майк
Android 1.6 changelog:http://developer.android.com/sdk/android-1.6.html#api
WRITE_EXTERNAL_STORAGE: позволяет приложение для записи на внешний место хранения. приложения, использующие уровень API 3 и ниже будут неявно предоставлены это разрешение (и это будет видимый пользователю); приложения использование API уровня 4 или выше должно явно запросите это разрешение.
но это только один из них. По какой-то причине в Официальном журнале изменений отсутствует информация о READ_PHONE_STATE. Полная история проясняется здесь:http://blogs.zdnet.com/Burnette/?p=1369&page=3
новые разрешения. 1.6 программы должны явный запрос WRITE_EXTERNAL_STORAGE разрешение иметь возможность изменять содержимое SD-карты, и они должны явно запрос READ_PHONE_STATE разрешение, чтобы иметь возможность быть в состоянии получить информацию о состоянии телефона. приложения таргетинг на более ранние версии будет всегда запрашивать эти разрешения неявно.
Как вы можете видеть, нет никакого способа опубликовать приложение, предназначенное для 1.5 или более ранних версий, не запрашивая эти разрешения при установке на телефонах под управлением 1.6 или выше.