Sobes.tech
Junior

Android'de hangi izin türleri (permissions) vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de, uygulamanın korumalı kaynaklara ve kullanıcının verilerine erişim seviyelerini belirleyen çeşitli izin türleri vardır.

  • Normal izinler: Düşük riskli izinler. Uygulama yüklemesi sırasında otomatik olarak verilir ve çalışma sırasında kullanıcının açık onayı gerekmez. Örneğin, internet erişimi (android.permission.INTERNET).
  • Tehlikeli izinler: Yüksek riskli izinler. Uygulama çalışırken kullanıcının açık onayını gerektirir. Bu kaynaklara erişim, cihazın gizliliğini veya işlevselliğini etkileyebilir. Örneğin, kişiler erişimi (android.permission.READ_CONTACTS), kamera (android.permission.CAMERA).
  • İmza izinleri: Aynı sertifikayla imzalanmış uygulamalara verilebilen izinler. Bu izinler, aynı sistem veya uygulama seti içindeki bileşenler arasındaki erişimi kontrol etmek için kullanılır.
  • İmza veya sistem izinleri: Bu izinler, ya aynı sertifikayla imzalanmış uygulamalara ya da sistem bölümünde bulunan uygulamalara verilebilir.

Ayrıca, şu şekilde ayırt edilebilir:

  • Kurulum zamanında izinler: Uygulama kurulum sırasında talep edilen ve verilen izinler. normal ve imza izinlerini içerir.
  • Çalışma zamanında izinler: Android 6.0 (API seviyesi 23) ve üzeri cihazlarda uygulama çalışırken talep edilen izinler. tehlikeli izinleri içerir.
  • Özel izinler: Verilmesi için özel adımlar gerektiren özel izin sınıfı. Örneğin, diğer pencerelerin üzerine çıkma (SYSTEM_ALERT_WINDOW) veya sistem ayarlarını değiştirme (WRITE_SETTINGS). Bunlar ne normal ne de tehlikeli izinlere aittir.

Uygulamanın manifest dosyasında, gerekli tüm izinler talep edilir:

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

Tehlikeli izinler, çalışma zamanında talep edilir:

// Kişileri okumak için izin talep örneği
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 {
    // İzin zaten verildi, işlemi gerçekleştirebiliriz
}