Sobes.tech
Junior

Millised on Androidis olemasolevad load (permissions)?

sobes.tech AI

Vastus AI-lt

Androidis on mitu tüüpi luba, mis määravad rakenduse juurdepääsu tasemed kaitstud ressurssidele ja kasutaja andmetele.

  • Tavalised load: Väikese riskiga load. Neid antakse automaatselt rakenduse installimisel ega nõua kasutaja selget nõusolekut käitamise ajal. Näiteks internetiühendus (android.permission.INTERNET).
  • Ohtlikud load: Kõrge riskiga load. Need nõuavad kasutaja selget nõusolekut rakenduse käitamise ajal. Nende ressursside kasutamine võib mõjutada privaatsust või seadme tööd. Näiteks kontaktidele (android.permission.READ_CONTACTS), kaamerale (android.permission.CAMERA) juurdepääs.
  • Allkirjastatud load: Load, mida saab anda rakendustele, mis on allkirjastatud sama sertifikaadiga nagu määrav rakendus. Kasutatakse juurdepääsukontrolli ühe süsteemi või rakenduste komplekti komponentide vahel.
  • Allkirjastatud või süsteemload: Need load võivad olla antud kas allkirjastatud rakendustele või süsteemiosa rakendustele.

Lisaks võib välja tuua:

  • Installimise ajal nõutavad load: Need load küsitakse ja antakse rakenduse installimise ajal. Nende hulka kuuluvad tavalised ja sõlmitud load.
  • Käivitusajal nõutavad load: Need load küsitakse rakenduse käivitamisel Android 6.0 (API tase 23) ja uuematel seadmetel. Nende hulka kuuluvad ohtlikud load.
  • Eritüüpi load: Eri klassi load, mis nõuavad spetsiaalseid samme nende andmiseks. Näiteks katmine teiste akende kohal (SYSTEM_ALERT_WINDOW) või süsteemi seadete muutmine (WRITE_SETTINGS). Need ei kuulu tavaliste ega ohtlike kategooriate alla.

Rakenduse manifestis küsitakse kõiki vajalikke lube:

<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>

Ohtlike lubade taotlemine toimub käitamise ajal:

// Näide, kuidas taotleda juurdepääsu kontaktidele
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 {
    // Luba on juba antud, saab operatsiooni teha
}