Где я могу найти больше информации о разрешениях для Android?

1

Мне нужно обновить старое приложение для Android с minSdkVersion = "19", поэтому мне нужно обработать все разрешения.

В манифесте это требует некоторых опасных разрешений. например:

<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- normal -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- normal -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- normal -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- dangerous -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- ??? -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- normal -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- normal -->
<uses-permission android:name="android.permission.VIBRATE" /> <!-- normal -->
<uses-permission android:name="android.permission.CAMERA" /> <!-- dangerous -->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- dangerous -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- dangerous -->

<android:uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- dangerous -->
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"  android:maxSdkVersion="18" /> <!-- dangerous -->
  1. Как я могу найти в коде, где нужны эти опасные разрешения? Есть ли список функций, который зависит от каждого разрешения?

  2. Что касается MOUNT_UNMOUNT_FILESYSTEMS - где я могу найти, если это опасно или нормально?

Теги:
android-permissions

1 ответ

1

Прежде чем ответить на конкретные вопросы, позвольте мне сказать, что, если ваше приложение будет использоваться обычными пользователями (например, загружать его из Google play или других магазинов), перечисление такого количества разрешений, вероятно, отпугнет пользователей. Из вопроса звучит так, будто вы наследуете чужой код, и некоторые из этих разрешений даже не нужны.

Еще одна важная вещь, на которую следует обратить внимание, это разница между сторонними приложениями (например, приложениями, которые вы загружаете из магазина Google Play) и приложениями производителей телефонов (большинство приложений, установленных на вашем телефоне при его покупке).

Приложения производителя могут использовать разрешения, которые не могут использовать третьи стороны.

На ваш вопрос:

  1. Я не помню полный список функций с необходимым разрешением для каждого. Может быть, кто-то еще может просветить нас обоих здесь :) Код, нацеленный на Android M и выше, ДОЛЖЕН обернуть любое "опасное" поведение проверкой того, что разрешение предоставлено, используя такие функции, как ContextCompat.checkSelfPermission(Context, String), чтобы избежать исключения SecurityException время выполнения., Но найти "опасное" поведение в старом коде практически невозможно, главным образом потому, что соглашение Android OS с разработчиками заключалось в том, что "вы просто запрашиваете эти разрешения в манифесте, и я буду следить за тем, чтобы не возникало никаких исключений безопасности во время выполнения". Боюсь, здесь нужен ручной поиск.

  2. Вот полный список всех доступных разрешений, из официальной документации Android -

https://developer.android.com/reference/android/Manifest.permission

Обратите внимание, что разрешение MOUNT_UNMOUNT_FILESYSTEM игнорируется для сторонних приложений, поэтому (если вы не работаете, например, в Samsung или Xiaomi), вы можете безопасно удалить это разрешение из своего манифеста.

  1. Также обратите внимание, что если вы запрашиваете разрешение FINE_LOCATION, нет необходимости запрашивать также разрешение COARSE_LOCATION.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню