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ésaláírásiengedé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élyesengedé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 anormál, sem aveszélyeskategó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ó
}