Sobes.tech
Junior

Kādi ir Android pieejamie atļauju (permissions) veidi?

sobes.tech AI

Atbilde no AI

Android ir pastāv vairākas atļauju veidi, kas nosaka lietotnes piekļuves līmeni aizsargātiem resursiem un lietotāja datiem.

  • Normālas atļaujas: Atļaujas ar minimālu risku. Tās tiek automātiski piešķirtas instalēšanas laikā un neprasa lietotāja skaidru piekrišanu darbības laikā. Piemēram, interneta piekļuve (android.permission.INTERNET).
  • Bīstamas atļaujas: Augsta riska atļaujas. Tās prasa lietotāja skaidru piekrišanu darbības laikā. Pieeja šiem resursiem var ietekmēt konfidencialitāti vai ierīces darbību. Piemēram, piekļuve kontaktiem (android.permission.READ_CONTACTS), kamerai (android.permission.CAMERA).
  • Parakstītas atļaujas: Atļaujas, kuras var piešķirt lietotnēm, parakstītām ar to pašu sertifikātu kā noteicošo lietotni. Tās tiek izmantotas piekļuves kontrolei starp vienas sistēmas vai lietotņu komponentiem.
  • Parakstītas vai sistēmas atļaujas: Šīs atļaujas var tikt piešķirtas vai nu lietotnēm ar to pašu sertifikātu, vai lietotnēm, kas atrodas sistēmas sadaļā.

Papildus var izcelt:

  • Instalēšanas laikā pieprasītās atļaujas: Tās tiek pieprasītas un piešķirtas instalēšanas laikā. Tās ietver normālas un parakstītas atļaujas.
  • Darba laikā pieprasītās atļaujas: Tās tiek pieprasītas darbības laikā Android 6.0 (API līmenis 23) un jaunākās versijās. Tās ietver bīstamas atļaujas.
  • Īpašas atļaujas: Īpaša atļauju klase, kas prasa īpašus soļus to piešķiršanai. Piemēram, pārklāšana virs citiem logiem (SYSTEM_ALERT_WINDOW) vai sistēmas iestatījumu maiņa (WRITE_SETTINGS). Tās nepieder ne normālajām, ne bīstamajām kategorijām.

Programmas manifestā tiek pieprasītas visas nepieciešamās atļaujas:

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

Bīstamu atļauju pieprasīšana tiek veikta darbības laikā:

// Piemērs, kā pieprasīt atļauju lasīt 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 {
    // Atļauja jau ir piešķirta, var veikt operāciju
}