Требовать разрешения только для старых версий Android: maxSdkVersion не работает?

Я хочу использовать некоторые разрешения только для более старых устройств для обеспечения совместимости. Поэтому я сделал некоторые исследования и нашел это здесь :

андроид: maxSdkVersion
Самый высокий уровень API, на котором это разрешение должно быть предоставлено вашему приложению. Установка этого атрибута полезна, если требуется разрешение, требуемое вашему приложению, начиная с определенного уровня API.

Например, начиная с Android 4.4 (API уровня 19), больше не требуется, чтобы приложение запрашивало разрешение WRITE_EXTERNAL_STORAGE, когда ваше приложение хочет писать в свои собственные каталоги конкретных приложений на внешнем хранилище (каталоги, предоставленные getExternalFilesDir ()), , Однако разрешение требуется для уровня API 18 и ниже. Таким образом, вы можете заявить, что это разрешение требуется только до уровня API 18 с таким объявлением:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> 

Я попытался реализовать это, но это не сработало. Поэтому я создаю этот простой тест:

 <uses-permission android:name="android.permission.WRITE_SMS" android:maxSdkVersion="3" /> 

Насколько я понимаю, это разрешение требуется только для устройств с уровнями API 1-3, но я получаю этот запрос на разрешение даже на устройстве API 18. Я что-то не так или эта функция сломана?

Solutions Collecting From Web of "Требовать разрешения только для старых версий Android: maxSdkVersion не работает?"

maxSdkVersion был добавлен в API уровня 19 ( документы должны были упомянуть об этом ). Ссылка :

Ввести maxSdkVersion для <uses-permission>

Таким образом, приложение может автоматически закачивать свои запросы на разрешение при работе в более поздних версиях ОС, где эти разрешения больше не актуальны, но могут быть тревожными для пользователя. Канонический пример – WRITE_EXTERNAL_STORAGE, который из KLP становится ненужным для приложения, чтобы использовать внешний объем хранилища исключительно для своих собственных потребностей больших данных, без необходимости фактического совместного использования файловой системы среди нескольких приложений.

Ошибка 9761041

Change-Id: I60130af3a108fe4a750c356038a1c8cb897e9c8b (отсутствует, может быть внутренним изменением Google)

Похоже, что Android 4.4 все еще не назывался KK 🙂

На моем HTC с Android 5.0.2 внешний накопитель вышел из строя при наличии разрешений и ограничений: android.permission.WRITE_EXTERNAL_STORAGE и maxSdkVersion = 18 . Поэтому мне нужно было изменить maxSdkVersion на 22.