Sobes.tech
Junior

Androidda qanday ruxsatlar (permissions) mavjud?

sobes.tech AI

AIdan javob

Androidda, ilovalar uchun himoyalangan resurslar va foydalanuvchi ma'lumotlariga kirish darajalarini belgilovchi bir nechta ruxsat turlari mavjud.

  • Oddiy ruxsatlar: Minimal xavfga ega ruxsatlar. Ular dastur o'rnatilganda avtomatik ravishda beriladi va ish vaqtida foydalanuvchining aniq roziligini talab qilmaydi. Masalan, internetga kirish (android.permission.INTERNET).
  • Xatarlik ruxsatlar: Yuqori xavfga ega ruxsatlar. Ular dastur ish vaqtida foydalanuvchidan aniq rozilikni talab qiladi. Bu resurslarga kirish maxfiylik yoki qurilmaning ishlashiga ta'sir qilishi mumkin. Masalan, kontaktlarga kirish (android.permission.READ_CONTACTS), kamera (android.permission.CAMERA).
  • Imzo ruxsatlari: Bir xil sertifikat bilan imzolangan ilovalarga berilishi mumkin bo'lgan ruxsatlar. Ular bir tizim yoki ilovalar to'plamidagi komponentlar o'rtasida kirishni nazorat qilish uchun ishlatiladi.
  • Imzo yoki tizim ruxsatlari: Bu ruxsatlar, yoki imzolangan ilovalarga yoki tizim bo'limida joylashgan ilovalarga berilishi mumkin.

Shuningdek, quyidagilarni ajratish mumkin:

  • O'rnatish vaqtida ruxsatlar: Ilovani o'rnatish vaqtida so'raladigan va beriladigan ruxsatlar. Ular oddiy va imzo ruxsatlarini o'z ichiga oladi.
  • Ish vaqtida ruxsatlar: Android 6.0 (API daraja 23) va undan yuqori qurilmalarda ish vaqtida so'raladigan ruxsatlar. Ular xatarlik ruxsatlarni o'z ichiga oladi.
  • Maxsus ruxsatlar: Maxsus qadamlarni talab qiladigan ruxsatlar sinfi. Masalan, boshqa oynalar ustiga chizish (SYSTEM_ALERT_WINDOW) yoki tizim sozlamalarini o'zgartirish (WRITE_SETTINGS). Ular oddiy yoki xatarlik ruxsatlariga kirmaydi.

Ilovaning manifest faylida barcha zarur ruxsatlar so'raladi:

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

Xatarlik ruxsatlar ish vaqtida so'raladi:

// Kontaktlarni o'qish uchun ruxsat so'rash misoli
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 {
    // Ruxsat allaqachon berilgan, operatsiyani bajarish mumkin
}