Android-разрешения: телефонные звонки: состояние и идентификация телефона

Мое приложение для Android не имеет ничего общего с телефонными звонками, но я вижу, что когда я устанавливаю сборку отладки на своем тестовом устройстве, для этого требуются разрешения «Телефонные звонки: читать состояние телефона и идентификатор». (Я не упоминаю об этом в AndroidManifest.xml ).

Я хотел бы иметь минимально возможные разрешения и задавался вопросом, знает ли кто-нибудь, как избавиться от этого? Я прокомментировал ту часть, где я Build.MODEL некоторые материалы из Build.MODEL , Build.VERSION.* т. Д. Я также прокомментировал ту часть, где я определял ориентацию ландшафта и портрета, полагая, что это может быть «состояние телефона». Но ни один из них не пытался удалить это разрешение.

Я нашел этот отчет об ошибке: http://code.google.com/p/android/issues/detail?id=4101, но он помечается как работающий с запиской о правильности прав доступа с рынка, но не в противном случае. Это опыт других людей? (Мне бы не хотелось публиковать на рынке, чтобы проверить это.) В противном случае, кто-нибудь знает, есть ли API, который я могу избежать, чтобы это вызвало это, поэтому моему приложению не нужно это разрешение?

Благодаря!

(Отвечая на мой собственный вопрос, если кто-то еще сталкивается с этой проблемой и ищет его.)

Копаясь в 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" /> 

Вот и все.

Получайте удовольствие, -Mike

Изменения в Android 1.6: http://developer.android.com/sdk/android-1.6.html#api

WRITE_EXTERNAL_STORAGE : Позволяет программе писать на внешнее хранилище. Приложениям, использующим API Level 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 или выше.