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
tavalisedjasõlmitudload. - Käivitusajal nõutavad load: Need load küsitakse rakenduse käivitamisel Android 6.0 (API tase 23) ja uuematel seadmetel. Nende hulka kuuluvad
ohtlikudload. - 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 kuulutavalisteegaohtlikekategooriate 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
}