Sobes.tech
Junior

Milyen típusú engedélyek (permissions) léteznek az Androidban?

sobes.tech MI

Válasz az MI-től

Az Android rendszerben többféle engedély létezik, amelyek meghatározzák az alkalmazás hozzáférési szintjeit a védett erőforrásokhoz és felhasználói adatokhoz.

  • Normál engedélyek: Alacsony kockázatú engedélyek. Ezek automatikusan megadódnak az alkalmazás telepítésekor, és futás közben nem igényelnek kifejezett felhasználói hozzájárulást. Például az internethez való hozzáférés (android.permission.INTERNET).
  • Veszélyes engedélyek: Magas kockázatú engedélyek. Ezek futás közben igénylik a felhasználó kifejezett hozzájárulását. Ezek az erőforrások befolyásolhatják az eszköz adatvédelmét vagy működését. Például a kapcsolatokhoz való hozzáférés (android.permission.READ_CONTACTS), kamera (android.permission.CAMERA).
  • Aláírási engedélyek: Olyan engedélyek, amelyeket ugyanazzal a tanúsítvánnyal aláírt alkalmazásoknak lehet adni, mint amelyik az engedélyt meghatározza. Ezek az alkalmazások közötti hozzáférés ellenőrzésére szolgálnak.
  • Aláírás vagy rendszer engedélyek: Ezek az engedélyek vagy ugyanazzal a tanúsítvánnyal aláírt alkalmazásoknak, vagy a rendszer részében lévő alkalmazásoknak adhatók.

Ezen kívül megkülönböztethetjük:

  • Telepítéskori engedélyek: Az alkalmazás telepítése során kérhető és adható engedélyek. Ide tartoznak a normál és aláírási engedélyek.
  • Futás közbeni engedélyek: Az Android 6.0 (API szint 23) vagy újabb eszközökön futás közben kérhető engedélyek. Ide tartoznak a veszélyes engedélyek.
  • Különleges engedélyek: Olyan engedélyosztály, amelyhez speciális lépések szükségesek a megadásukhoz. Például más ablakok fölé helyezés (SYSTEM_ALERT_WINDOW) vagy rendszerbeállítások módosítása (WRITE_SETTINGS). Ezek nem tartoznak sem a normál, sem a veszélyes kategóriába.

Az alkalmazás manifestjében minden szükséges engedély kérhető:

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

A veszélyes engedélyek kérvényezése futás közben történik:

// Példa engedély kérésére a kapcsolatok olvasásához
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 {
    // Az engedély már megadva, a művelet végrehajtható
}