Неправильный Build.VERSION.SdkInt? - PullRequest
1 голос
/ 18 января 2020

Мое приложение падает на android 4 (по крайней мере) и работает на android 8 до 10. На android 4 (4.4) ошибка Could not find method android.app.Activity.checkSelfPermission, но мой код:

       if (Build.VERSION.SdkInt>=BuildVersionCodes.M)
       {
          if (ContextCompat.CheckSelfPermission(this,Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted)
                    RequestPermissions(new String[]{Manifest.Permission.WriteExternalStorage}, 1);

        }

Android 4.4 меньше Android М, нет? Тогда может ли Build.VERSION.SdkInt вернуть неправильное значение?

1 Ответ

0 голосов
/ 19 января 2020

На Android 4.4, это API 19, checkSelfPermission () не внедрялся в собственный контекст до API 23 (Android 6.0). Поэтому вам нужно будет использовать не менее версии 23.0.0 библиотеки поддержки.

С официального android сайта разработчика :

Если устройство работает Android 5.1 или ниже, или целевой SDK вашего приложения равен 22 (Android 5.1) или ниже: если вы указываете опасное разрешение в своем манифесте, пользователь должен предоставить разрешение при установке приложения; если они не предоставляют разрешения, система вообще не устанавливает приложение.

Если устройство работает Android 6.0 или выше, а целевой SDK вашего приложения равен 23 (Android 6.0) или выше: приложение должно перечислить разрешения в манифесте, и оно должно запрашивать каждое опасное разрешение, в котором оно нуждается во время работы приложения. Пользователь может предоставлять или отклонять каждое разрешение, и приложение может продолжать работать с ограниченными возможностями, даже если пользователь отклоняет запрос на разрешение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...