Android’de Normal Permission — nedir, koruma seviyeleri ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-05-20 Okuma süresi: 8 dk

Normal Permission, Android’de sistemin kullanıcıya sormadan otomatik olarak verdiği bir izin kategorisidir. Android Developer Documentation, 2024’e göre, normal izinler ProtectionLevel normal’e sahiptir ve tehlikeli olanların aksine çalışma zamanı diyaloğu gerektirmez. İnternet, ağ durumu ve titreşime erişimi kapsarlar, kullanıcının hassas verileri için risk oluşturmazlar.

Anahtar Noktalar

  • Normal Permission, ProtectionLevel normal ile Android izin kategorisidir, kurulumda otomatik olarak verilir.
  • Kullanmak için manifest dosyasına uses-permission eklemek yeterlidir — kullanıcıya hiçbir diyalog gösterilmez.
  • Tehlikeli olanlardan temel farkı, çalışma zamanı isteğinin olmaması ve ayarlar üzerinden iptal edilememesidir.
  • Liste INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE ve diğer sistem sabitlerini içerir.
  • Uygulama kodunda PackageManager.getPermissionInfo aracılığıyla koruma seviyesini kontrol edebilirsiniz.

Android’de Normal Permission Nedir

Normal Permission, Android’de ProtectionLevel normal ile bir sistem izin türüdür, kurulum anında bir uygulamaya otomatik olarak verilir. Geliştiricinin bunu talep etmek için kod yazması gerekmez — sadece AndroidManifest.xml’de izni bildirmek yeterlidir. Kullanıcı hiçbir diyalog görmez ve normal bir izni ayrı olarak iptal edemez, yalnızca uygulamanın tamamını kaldırarak.

Android sistemi normal izinleri düşük riskli olarak sınıflandırır — kişisel verilere, kameraya veya mikrofonra erişim sağlamazlar. Tipik örnekler: internet erişimi, titreşim kontrolü, Wi-Fi durumu okuma. Android Security Model (2024)’e göre, tüm sistem izinlerinin yaklaşık yüzde 40’ı normal kategoriye aittir.

Önemli bir özellik — normal izinler çalışma zamanında Ayarlar üzerinden iptal edilemez. Kullanıcı erişimi reddetmek isterse, tek yol uygulamayı kaldırmaktır. Geliştiriciler bunu mimaride dikkate almalıdır, ancak kullanıcılar için bu yaklaşım etkileşimi basitleştirir: ilk başlatmada diyalog yok.

Kategorinin tarihçesi

Normal ve tehlikeli izinlere ayrım, Android 6.0 Marshmallow (API 23) ile ortaya çıktı. Bu sürümden önce, tüm izinler kurulumda talep edilirdi — kullanıcı tek bir liste görür ve tamamını kabul veya reddederdi. Normal Permission düşük riskli işlemler için bu modeli korurken, Dangerous çalışma zamanı talebine geçti. Bu değişiklik kullanıcı deneyimini iyileştirdi ve aynı zamanda güvenliği artırdı.

Hangi API’ler Normal Permission gerektirir

Birçok Android sistem API’si, erişim otomatik olsa bile, normal bir iznin açıkça bildirilmesini gerektirir. Örneğin, ConnectivityManager sınıfı ACCESS_NETWORK_STATE gerektirir, VibratorService VIBRATE gerektirir, WifiManager ACCESS_WIFI_STATE gerektirir. İlgili uses-permission bildirilmeden bu API’leri çağırmak SecurityException’a yol açar.

ProtectionLevel normal Nasıl Çalışır

ProtectionLevel normal, Android İzin Sistemindeki minimum koruma seviyesidir. Bu seviyedeki izinler manifest’te bildirilir ve sistem kurulumda bildirimi kontrol eder, kullanıcı müdahalesi olmadan erişim sağlar. Hiçbir UI öğesi gösterilmez, hiçbir callback çağrılmaz.

Doğrulama mekanizması PackageManager seviyesinde çalışır. APK kurulumu sırasında sistem tüm uses-permission etiketlerini tarar, permissions.xml dosyalarındaki sistem tanımlarıyla eşleştirerek her iznin koruma seviyesini belirler ve normal seviye için sadece erişimi kaydeder. Süreç milisaniyeler sürer ve kullanıcı arayüzüyle etkileşim gerektirmez.

Verme algoritması şöyle çalışır:

  • Sistem, uygulama kurulumu anında manifest’i okur
  • Cihazdaki /etc/permissions/ içinde protectionLevel’ı eşleştirir
  • Değer normal ise — otomatik olarak erişim sağlar
  • İzin, uygulama tamamen kaldırılana kadar aktif kalır

Kullanıcı, arayüz üzerinden normal bir izni iptal edemez. Uygulama ayarlarının İzinler bölümünde yalnızca tehlikeli izinler görüntülenir. Bu, işlevin hassasiyet seviyesinden bağımsız olarak her iznin ayrı onay gerektirdiği iOS’un tersidir.

Normal Permission vs Dangerous Permission

Normal ve Dangerous Permission, Android’de korumanın iki zıt kategorisidir. Temel fark, verme yöntemindedir: normaller kurulumda otomatik olarak verilir, tehlikeliler çalışma zamanı diyaloğu aracılığıyla açık rıza gerektirir. Bu ayrım, Android 6.0 Marshmallow sürümünden itibaren Android güvenlik mimarisine yerleştirilmiştir.

Temel özelliklerin karşılaştırması:

ÖzellikNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
Kullanıcı talebiGerekmezÇalışma zamanı diyaloğu zorunlu
İptal edilebilirlikHayır, sadece uygulama kaldırmaEvet, her zaman ayarlardan
Kodda kontrolHer zaman PERMISSION_GRANTEDcheckSelfPermission zorunlu
ÖrneklerINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Kullanıcı talebinde fark

Kullanıcı, Normal Permission talep ederken hiçbir diyalog görmez. Bir uygulamanın INTERNET’e ihtiyacı varsa — onu sessizce alır. Dangerous Permission için sistem, talep edilen erişimi açıklayan bir modal diyalog gösterir. Kullanıcı İzin Ver veya Reddet düğmesine basar ve daha sonra her zaman Ayarlar üzerinden izni iptal edebilir. Bu, arayüz geliştirme stratejisini belirleyen temel bir UX farkıdır.

Ne zaman Normal seçilir

Normal, erişimin hassas verilerle ilgili olmadığı tüm durumlarda kullanılmalıdır. Bağlantı kontrolü için ACCESS_NETWORK_STATE, dokunsal geri bildirim için VIBRATE, HTTP istekleri için INTERNET — bunların hepsi normal izinlerdir. Normalin yeterli olduğu yerde dangerous seviyesini kullanmak kötü bir uygulamadır, gereksiz diyaloglar oluşturur ve kullanıcının uygulamaya olan güvenini azaltır.

Android’de Normal İzinlerin Listesi

Android tanımlar her biri belirli bir sistem işlevine karşılık gelen onlarca normal izin. Bunların tümü Manifest.permission sınıfının sabitleri aracılığıyla kullanılabilir. Aşağıda uygulama geliştirmede en sık kullanılanların bir listesi bulunmaktadır.

SabitErişimAçıklama
INTERNETHTTP istekleri için ağ soketleri açma
ACCESS_NETWORK_STATEAğ durumu hakkında bilgi alma
ACCESS_WIFI_STATEWi-FiWi-Fi bağlantıları hakkında bilgi okuma
VIBRATETitreşimCihaz titreşim motorunu kontrol etme
BLUETOOTHBluetoothBluetooth cihazlarına bağlanma
WAKE_LOCKGüçİşlemcinin uyku moduna geçmesini engelleme
SET_ALARMAlarmAlarmManager aracılığıyla alarm ayarlama
CHANGE_NETWORK_STATEAğ bağlantı durumunu değiştirme

Normal izinlerin grupları

Normal izinler, görüntüleme amacıyla Permission Group’larda gruplanmaz. Android’deki gruplar, yalnızca tehlikeli izinlerin gösterildiği ayarlar ekranı içindir. Ancak, normal izinler mantıksal olarak kategorilere ayrılabilir: ağ (INTERNET, ACCESS_NETWORK_STATE), donanım (VIBRATE, WAKE_LOCK), sistem (SET_ALARM) ve Bluetooth izinleri.

Manifest.permission’daki bazı sabitler, farklı Android sürümlerinde koruma seviyelerini değiştirebilir. Örneğin, BLUETOOTH_CONNECT Android 12+’de çalışma zamanı talebiyle tehlikeli bir izin haline gelirken, eski sürümlerde normaldi. Geliştiricilerin, dokümantasyon aracılığıyla hedef API için geçerli protectionLevel’ı kontrol etmeleri önerilir.

PackageManager aracılığıyla Normal Permission kontrolü

Bir geliştirici, PackageManager aracılığıyla programatik olarak bir iznin normal olup olmadığını kontrol edebilir. getPermissionInfo yöntemi, protectionLevel alanında PermissionInfo.PROTECTION_NORMAL bayrağını içeren PermissionInfo döndürür. Bu, dinamik işleme ve hata ayıklama için kullanışlıdır.

kotlin
fun isNormalPermission(permission: String): Boolean {
    val pm = packageManager
    val info = pm.getPermissionInfo(
        permission,
        PackageManager.GET_META_DATA
    )
    return info.protectionLevel ==
        PermissionInfo.PROTECTION_NORMAL
}

Manifest’te Normal Permission Nasıl Bildirilir

Normal Permission bildirimi AndroidManifest.xml’de en basit işlemdir, yalnızca bir uses-permission etiketi gerektirir. Ek protectionLevel yapılandırması gerekmez, çünkü koruma seviyesi sistem tanımı tarafından belirlenir, uygulama manifest’i tarafından değil. Geliştirici sadece sabitin tam adını belirtir.

xml
<!-- AndroidManifest.xml -->
<uses-permission
    android:name="android.permission.INTERNET" />
<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
    android:name="android.permission.VIBRATE" />

Sistem, kurulumda tüm bildirimleri işler. Bildirilen izinlerden en az birinin normalden farklı bir protectionLevel’ı varsa, çalışma zamanı talebi gerekecektir. INTERNET en popüler normal izindir, özellikle HTTP istekleri yapan veya ağdan içerik yükleyen çoğu Android uygulamasında bulunur.

Tam manifest örneği

Normal ve tehlikeli izinlerle AndroidManifest.xml’in tam bir örneği farkı gösterir: sözdizimsel olarak uses-permission etiketleri aynıdır, ancak çalışma zamanında INTERNET ve VIBRATE otomatik olarak verilirken, CAMERA bir diyalog gerektirecektir.

xml
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Normal permissions -->
    <uses-permission
        android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="android.permission.VIBRATE" />

    <!-- Dangerous permission -->
    <uses-permission
        android:name="android.permission.CAMERA" />
</manifest>

Manifest Merger ve Normal Permission

Kütüphaneler (Google Play Services, Firebase, Glide) kullanırken, bunlar Manifest Merger aracılığıyla nihai manifest’e kendi uses-permission’larını ekleyebilir. Bazıları normal (Firebase için INTERNET), diğerleri tehlikelidir (Google Maps için ACCESS_FINE_LOCATION). Geliştirici, yayınlamadan önce build/outputs/logs/manifest-merger-report.txt içindeki nihai birleştirilmiş manifest’i kontrol etmelidir.

Normal Permission Sınırlamaları

Normal Permission‑ın iki temel sınırlaması vardır: kullanıcı tarafından iptal edilememesi ve yönetim arayüzünün olmaması. Kullanıcı uygulamaya güvenmezse ancak normal izin zaten otomatik olarak verilmişse — tek çözüm uygulamayı kaldırmaktır. Bu, normal izinler Android’in standart araçlarıyla engellenemediği için belirli bir risk oluşturur.

Ek bir sınırlama, birden çok profilli (Work Profile, Multiple Users) cihazlarda ortaya çıkar. Normal Permission tüm profillere aynı anda verilir — uygulama izni yalnızca bir profille sınırlandıramaz. Kurumsal senaryolarda bu, Managed Configurations aracılığıyla çözülür.

Bir uygulamanın belirli bir anda Normal Permission kullanıp kullanmadığını kontrol etmek mümkün değildir. Sistem yöntemi checkSelfPermission yalnızca tehlikeli izinler için çalışır. Normaller için her zaman PERMISSION_GRANTED döndürür, bu da gerçek etkinliği yansıtmaz. Bu, güvenlik denetimleri ve uygulama davranışı analizi sırasında dikkate alınmalıdır.

Ayrıca bazı cihaz üreticilerinin (Xiaomi, Huawei, Samsung) izinlerin standart davranışını değiştirdiğini unutmamak gerekir. Onların üretici yazılımlarında, Normal Permission tescilli MIUI veya EMUI arayüzünde ek izinler gerektirebilir. Geliştiricilerin farklı üreticilerin gerçek cihazlarında test etmeleri önerilir.

Sıkça Sorulan Sorular

Normal Permission, Dangerous’dan nasıl farklıdır?

Normal Permission kurulumda diyalog olmadan otomatik olarak verilir. Dangerous, kullanıcının açık rızasıyla çalışma zamanı talebi gerektirir ve ayarlar üzerinden iptal edilebilir. Normal, ProtectionLevel normal kullanır, Dangerous, protectionLevel dangerous kullanır.

Normal Permission için kod yazmam gerekir mi?

Hayır, normal izinler için AndroidManifest.xml’de uses-permission bildirmek yeterlidir. Talep kodu gerekmez — sistem erişimi otomatik olarak sağlar. Bu, ActivityCompat.requestPermissions gerektiren tehlikeli olanlardan ayırır.

Hangi Normal Permission’lar en popülerdir?

En çok kullanılanlar: INTERNET (ağ istekleri), ACCESS_NETWORK_STATE (bağlantı kontrolü), VIBRATE (dokunsal geri bildirim) ve WAKE_LOCK (işlemciyi uyanık tutma). Hemen hemen her Android uygulaması en azından INTERNET kullanır.

Normal Permission iptal edilebilir mi?

Hayır, Normal Permission uygulama ayarları üzerinden iptal edilemez. Erişimi durdurmanın tek yolu uygulamayı kaldırmaktır. Bu, kullanıcının her zaman devre dışı bırakabileceği tehlikeli izinlerden temel bir farktır.

Bir iznin ProtectionLevel’ı nasıl kontrol edilir?

PackageManager.getPermissionInfo kullanın, iznin dize adını iletin. Yöntem, protectionLevel alanıyla PermissionInfo döndürür. Kategoriyi belirlemek için PermissionInfo.PROTECTION_NORMAL veya PROTECTION_DANGEROUS sabitleriyle karşılaştırın.

Özet

  • Normal Permission, ProtectionLevel normal ile Android izin kategorisidir, kurulumda otomatik olarak verilir.
  • Bildirim için, çalışma zamanı kodu olmadan AndroidManifest.xml’de uses-permission etiketi yeterlidir.
  • Tehlikeli olanlardan diyalog olmaması, iptal edilememesi ve düşük risk seviyesiyle ayrılır.
  • En popüler: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE ve WAKE_LOCK.
  • ProtectionLevel, kodda PackageManager.getPermissionInfo aracılığıyla kontrol edilir.
  • Normal izinler uygulama ayarları ekranında görüntülenmez.
  • Kütüphaneler kullanırken, Manifest Merger aracılığıyla nihai manifest’i kontrol edin.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun