Sobes.tech
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 normal ir parašytus leidimus.
  • Vykdymo metu leidimai: Leidimai, kurie prašomi vykdant programėlę Android 6.0 (API lygis 23) ir aukštesniuose įrenginiuose. Tai apima pavojingus leidimus.
  • 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 nei normal nei pavojingų 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ą
}