Junior
Дар Android кадом намудҳои иҷозатҳо (permissions) мавҷуданд?
sobes.tech AI
Ҷавоб аз AI
Дар Android існує кілька видів дозволів, які визначають рівні доступу додатка до захищених ресурсів і даних користувача.
- Звичайні дозволи: Дозволи з мінімальним ризиком. Вони автоматично надаються при встановленні додатка і не вимагають явної згоди користувача під час виконання. Наприклад, доступ до Інтернету (
android.permission.INTERNET). - Небезпечні дозволи: Дозволи з високим ризиком. Вони вимагають явної згоди користувача під час виконання додатка. Доступ до цих ресурсів може вплинути на конфіденційність або роботу пристрою. Наприклад, доступ до контактів (
android.permission.READ_CONTACTS), камери (android.permission.CAMERA). - Підписані дозволи: Дозволи, які можуть бути надані додаткам, підписаним тим самим сертифікатом, що й додаток, який визначає дозвіл. Використовуються для контролю доступу між компонентами однієї системи або набору додатків.
- Підписані або системні дозволи: Ці дозволи можуть бути надані або додаткам, підписаним тим самим сертифікатом, або додаткам, що знаходяться в системному розділі.
Крім того, можна виділити:
- Дозволи при інсталяції: Дозволи, які запитуються і надаються під час інсталяції додатка. До них належать
звичайнііпідписанідозволи. - Дозволи під час виконання: Дозволи, які запитуються під час виконання додатка на пристроях з Android 6.0 (API рівень 23) і вище. До них належать
небезпековідозволи. - Особливі дозволи: Спеціальний клас дозволів, які вимагають особливих кроків для їх надання. Наприклад, накладання поверх інших вікон (
SYSTEM_ALERT_WINDOW) або зміна системних налаштувань (WRITE_SETTINGS). Вони не належать дозвичайнихабонебезпекових.
У манифесті додатка запитуються всі необхідні дозволи:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CAMERA" />
<application
...
>
...
</application>
</manifest>
Запит небезпекових дозволів виконується під час виконання:
// Приклад запиту дозволу на читання контактів
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.READ_CONTACTS),
MY_PERMISSIONS_REQUEST_READ_CONTACTS)
} else {
// Дозвіл вже надано, можна виконувати операцію
}