Junior
Kokios rūšies leidimai (permissions) egzistuoja Android?
sobes.tech AI
Atsakymas iš AI
Android yra kelių rūšių leidimai, kurie nustato programėlės prieigos lygius prie apsaugotų išteklių ir naudotojo duomenų.
- Normalūs leidimai: Mažo rizikos leidimai. Jie automatiškai suteikiami įdiegus programėlę ir nereikalauja aiškaus naudotojo sutikimo vykdymo metu. Pavyzdžiui, interneto prieiga (
android.permission.INTERNET). - Pavojingi leidimai: Aukšto rizikos leidimai. Jie reikalauja aiškaus naudotojo sutikimo vykdymo metu. Prieiga prie šių išteklių gali paveikti privatumo ar įrenginio veikimą. Pavyzdžiui, kontaktų (
android.permission.READ_CONTACTS), kameros (android.permission.CAMERA) prieiga. - Parašyti leidimai: Leidimai, kurie gali būti suteikti programėlėms, pasirašytoms tuo pačiu sertifikatu kaip ir nustatanti leidimą. Naudojami prieigos kontrolei tarp vienos sistemos ar programėlių komponentų.
- Parašyti arba sistemos leidimai: Šie leidimai gali būti suteikti arba programėlėms, pasirašytoms tuo pačiu sertifikatu, arba programėlėms, esančioms sistemos skiltyje.
Be to, galima išskirti:
- Įdiegimo metu suteikiami leidimai: Leidimai, kurie prašomi ir suteikiami diegiant programėlę. Tai apima
normalirparašytusleidimus. - Vykdymo metu leidimai: Leidimai, kurie prašomi vykdant programėlę Android 6.0 (API lygis 23) ir aukštesniuose įrenginiuose. Tai apima
pavojingusleidimus. - Specialūs leidimai: Ypatinga leidimų klasė, kuri reikalauja specialių žingsnių jų suteikimui. Pavyzdžiui, sluoksniavimas virš kitų langų (
SYSTEM_ALERT_WINDOW) arba sistemos nustatymų keitimas (WRITE_SETTINGS). Jie nepriklauso neinormalneipavojingųkategorijoms.
Programėlės manifeste prašomi visi reikalingi leidimai:
<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>
Pavojingų leidimų prašymas vykdomas vykdant:
// Pavyzdys, kaip prašyti leidimo skaityti kontaktus
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 {
// Leidimas jau suteiktas, galima vykdyti operaciją
}