Junior
Koje vrste dozvola (permissions) postoje u Androidu?
sobes.tech АИ
Одговор од АИ
У 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 {
// Дозвола је већ дата, може се извршити операција
}