Android-da Normal Permission — bu nədir, mühafizə səviyyələri və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-05-20 Oxuma vaxtı: 8 dəq

Normal Permission — Android-də sistemin istifadəçidən soruşmadan avtomatik təmin etdiyi icazələr kateqoriyasıdır. Android Developer Documentation, 2024-ə görə, normal icazələr ProtectionLevel normal-ə malikdir və təhlükəli olanlardan fərqli olaraq runtime dialoqu tələb etmir. Onlar internetə, şəbəkə vəziyyətinə və vibrasiyaya girişi əhatə edir, istifadəçinin məxfi məlumatları üçün risk yaratmır.

Əsas məqamlar

  • Normal Permission — ProtectionLevel normal olan, quraşdırma zamanı avtomatik təmin edilən Android icazələri kateqoriyası.
  • İstifadə üçün manifestdə uses-permission əlavə etmək kifayətdir — istifadəçiyə dialoq göstərilmir.
  • Təhlükəli olanlardan əsas fərqi — runtime sorğusunun olmaması və parametrlər vasitəsilə ləğv edilə bilməməsidir.
  • Siyahıya INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE və digər sistem sabitləri daxildir.
  • Mühafizə səviyyəsini proqram kodunda PackageManager.getPermissionInfo vasitəsilə yoxlamaq olar.

Android-də Normal Permission nədir

Normal Permission — Android sistem icazələrinin ProtectionLevel normal olan növüdür, proqrama quraşdırma anında avtomatik verilir. Tərtibatçı sorğu üçün kod yazmalı deyil — AndroidManifest.xml-də icazəni göstərmək kifayətdir. İstifadəçi dialoqları görmür və normal permission-u ayrıca ləğv edə bilməz, yalnız proqramı tamamilə silməklə.

Android sistemi normal icazələri aşağı riskli kimi təsnif edir — onlar şəxsi məlumatlara, kameraya və ya mikrofona giriş vermir. Tipik nümunələr: internetə giriş, vibrasiyanın idarə edilməsi, Wi-Fi vəziyyətinin oxunması. Android Security Model (2024)-ə görə, bütün sistem icazələrinin təxminən 40 faizi normal kateqoriyasına aiddir.

Vacib xüsusiyyət — normal icazələr Settings vasitəsilə runtime-da ləğv edilmir. İstifadəçi girişi qadağan etmək istəyirsə, yeganə yol proqramı silməkdir. Tərtibatçılar bunu arxitekturada nəzərə almalıdır, lakin istifadəçilər üçün bu yanaşma qarşılıqlı əlaqəni sadələşdirir: ilk işə salmada heç bir dialoq yoxdur.

Kateqoriyanın yaranma tarixi

Normal və təhlükəli icazələrə bölünmə Android 6.0 Marshmallow (API 23)-də ortaya çıxdı. Bu versiyaya qədər bütün icazələr quraşdırma zamanı soruşulurdu — istifadəçi vahid siyahı görür və onu tamamilə qəbul və ya rədd edirdi. Normal Permission bu modeli aşağı riskli əməliyyatlar üçün qorudu, Dangerous isə runtime sorğusuna keçdi. Bu dəyişiklik istifadəçi təcrübəsini yaxşılaşdırdı və eyni zamanda təhlükəsizliyi artırdı.

Hansı API-lər Normal Permission tələb edir

Bir çox Android sistem API-ləri, giriş avtomatik olsa belə, normal icazənin açıq şəkildə göstərilməsini tələb edir. Məsələn, ConnectivityManager sinfi ACCESS_NETWORK_STATE, VibratorService VIBRATE, WifiManager ACCESS_WIFI_STATE tələb edir. Müvafiq uses-permission bəyan edilmədən bu API-lərin çağırılması SecurityException-a səbəb olacaq.

ProtectionLevel normal necə işləyir

ProtectionLevel normal — Android Permission System-də minimum mühafizə səviyyəsidir. Bu səviyyəli icazələr manifestdə bəyan edilir və sistem quraşdırma zamanı bəyannaməni yoxlayır, istifadəçi müdaxiləsi olmadan giriş təmin edir. Heç bir UI elementi göstərilmir, heç bir callback çağırılmır.

Yoxlama mexanizmi PackageManager səviyyəsində işləyir. APK quraşdırılarkən sistem bütün uses-permission teqlərini skan edir, permissions.xml fayllarındakı sistem tərifləri ilə müqayisə edərək hər icazənin mühafizə səviyyəsini müəyyənləşdirir və normal-level üçün sadəcə girişi qeydiyyata alır. Proses millisaniyələr çəkir və istifadəçi interfeysi ilə qarşılıqlı əlaqə tələb etmir.

Təminat alqoritmi aşağıdakı kimidir:

  • Sistem proqramın quraşdırılması anında manifesti oxuyur
  • Cihazdakı /etc/permissions/ faylında protectionLevel-i müqayisə edir
  • normal dəyərində — avtomatik olaraq giriş verir
  • İcazə proqram tamamilə silinənə qədər aktiv qalır

İstifadəçi interfeys vasitəsilə normal icazəni ləğv edə bilməz. Proqram parametrlərində İcazələr bölməsində yalnız təhlükəli icazələr göstərilir. Bu, iOS ilə ziddiyyət təşkil edir, burada hər bir icazə funksiyanın həssaslıq səviyyəsindən asılı olmayaraq ayrıca təsdiq tələb edir.

Normal Permission vs Dangerous Permission

Normal və Dangerous Permission — Android-də iki əks mühafizə kateqoriyası. Əsas fərq təminat üsulundadır: normal icazələr quraşdırma zamanı avtomatik verilir, təhlükəli olanlar runtime dialoqu vasitəsilə açıq razılıq tələb edir. Bu fərq Android 6.0 Marshmallow versiyasından başlayaraq təhlükəsizlik arxitekturasına daxil edilmişdir.

Əsas xüsusiyyətlərin müqayisəsi:

XüsusiyyətNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
İstifadəçi sorğusuTələb olunmurRuntime dialoqu məcburidir
Ləğv imkanıXeyr, yalnız proqramın silinməsiBəli, istənilən vaxt parametrlər vasitəsilə
Kodda yoxlamaHəmişə PERMISSION_GRANTEDcheckSelfPermission məcburidir
NümunələrINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

İstifadəçi sorğusunda fərq

İstifadəçi Normal Permission sorğusunda heç bir dialoq görmür. Proqrama INTERNET lazımdırsa — onu səssizcə alır. Dangerous Permission üçün sistem tələb olunan girişin təsviri ilə modal dialoq göstərir. İstifadəçi Allow və ya Deny düyməsini basır, daha sonra istənilən vaxt Settings vasitəsilə icazəni ləğv edə bilər. Bu, interfeysin inkişaf strategiyasını təyin edən əsas UX fərqidir.

Nə vaxt Normal seçilməlidir

Normal, giriş həssas məlumatlara aid olmadıqda bütün hallarda istifadə edilməlidir. ACCESS_NETWORK_STATE qoşulmanı yoxlamaq üçün, VIBRATE toxunma rəyi üçün, INTERNET HTTP sorğuları üçün — bunların hamısı normal icazələrdir. Normalın kifayət etdiyi yerdə dangerous səviyyəsinin tətbiqi pis təcrübədir, lazımsız dialoqlar yaradır və istifadəçinin proqrama inamını azaldır.

Android-də normal icazələrin siyahısı

Android müəyyən edir onlarla normal icazə, hər biri müəyyən bir sistem funksiyasına uyğundur. Onların hamısı Manifest.permission sinfinin sabitləri vasitəsilə əlçatandır. Aşağıda proqram inkişafında ən çox istifadə olunanların siyahısı verilmişdir.

SabitGirişTəsvir
INTERNETŞəbəkəHTTP sorğuları üçün şəbəkə soketlərinin açılması
ACCESS_NETWORK_STATEŞəbəkəŞəbəkə vəziyyəti haqqında məlumatın alınması
ACCESS_WIFI_STATEWi-FiWi-Fi qoşulmaları haqqında məlumatın oxunması
VIBRATEVibrasiyaCihazın vibratorunun idarə edilməsi
BLUETOOTHBluetoothBluetooth cihazlarına qoşulma
WAKE_LOCKEnerjiProsessorun yuxuya keçməsinin bloklanması
SET_ALARMZəngli saatAlarmManager vasitəsilə zəngli saatın qurulması
CHANGE_NETWORK_STATEŞəbəkəŞəbəkə qoşulma vəziyyətinin dəyişdirilməsi

Normal icazələrin qrupları

Normal icazələr UI-də göstərilmək üçün Permission Group-da qruplaşdırılmır. Android-də qruplar parametrlər ekranı üçün nəzərdə tutulub, burada yalnız təhlükəli icazələr göstərilir. Lakin məntiqi olaraq normal icazələri kateqoriyalara bölmək olar: şəbəkə (INTERNET, ACCESS_NETWORK_STATE), aparat (VIBRATE, WAKE_LOCK), sistem (SET_ALARM) və Bluetooth icazələri.

Manifest.permission-dan bəzi sabitlər müxtəlif Android versiyalarında mühafizə səviyyəsini dəyişə bilər. Məsələn, BLUETOOTH_CONNECT Android 12+-də runtime sorğusu ilə təhlükəli icazəyə çevrildi, halbuki köhnə versiyalarda normal idi. Tərtibatçılara hədəf API üçün sənədlər vasitəsilə cari protectionLevel-i yoxlamaq tövsiyə olunur.

PackageManager vasitəsilə Normal Permission-un yoxlanılması

Tərtibatçı proqramlı şəkildə PackageManager vasitəsilə icazənin normal olub olmadığını yoxlaya bilər. getPermissionInfo metodu protectionLevel sahəsində PermissionInfo.PROTECTION_NORMAL bayrağını ehtiva edən PermissionInfo qaytarır. Bu, dinamik emal və sazlanma üçün faydalı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
}

Manifestdə Normal Permission necə elan edilir

Normal Permission-un elan edilməsi AndroidManifest.xml-də bir uses-permission teqi tələb edən ən sadə əməliyyatdır. Əlavə protectionLevel konfiqurasiyası tələb olunmur, çünki mühafizə səviyyəsi proqram manifesti ilə deyil, sistem tərifi ilə müəyyən edilir. Tərtibatçı sadəcə sabitin tam adını göstərir.

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 quraşdırma zamanı bütün bəyannamələri emal edir. Göstərilən icazələrdən ən azı biri normal-dan fərqli protectionLevel-ə malikdirsə, runtime sorğusu tələb olunacaq. INTERNET — ən populyar normal icazə, xüsusilə HTTP sorğuları yerinə yetirən və ya şəbəkədən məzmun yükləyən əksər Android proqramlarında mövcuddur.

Tam manifest nümunəsi

Normal və təhlükəli icazələri olan tam AndroidManifest.xml nümunəsi fərqi göstərir: sintaktik olaraq uses-permission teqləri eynidir, lakin icra mərhələsində INTERNET və VIBRATE avtomatik təmin ediləcək, CAMERA isə dialoq tələb edəcək.

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 və Normal Permission

Kitabxanalardan — Google Play Services, Firebase, Glide — istifadə edərkən onlar Manifest Merger vasitəsilə yekun manifestə öz uses-permission teqlərini əlavə edə bilər. Onlardan bəziləri normal (Firebase üçün INTERNET), digərləri təhlükəlidir (Google Maps üçün ACCESS_FINE_LOCATION). Tərtibatçı nəşrdən əvvəl build/outputs/logs/manifest-merger-report.txt faylında yekun birləşdirilmiş manifesti yoxlamalıdır.

Normal Permission məhdudiyyətləri

Normal Permission iki prinsipial məhdudiyyətə malikdir: istifadəçi tərəfindən ləğv edilə bilməməsi və idarəetmə üçün UI-nin olmaması. İstifadəçi proqrama etibar etmirsə, lakin normal icazə artıq avtomatik verilibsə — yeganə çıxış yolu proqramı silməkdir. Bu, müəyyən risk yaradır, çünki normal icazələr Android-in standart vasitələri ilə bloklanmır.

Əlavə məhdudiyyət çox profilli cihazlarda (Work Profile, Multiple Users) özünü göstərir. Normal Permission bütün profillər üçün dərhal təmin edilir — proqram icazəni yalnız biri ilə məhdudlaşdıra bilməz. Korporativ ssenarilərdə bu, Managed Configurations vasitəsilə həll edilir.

Proqramın Normal Permission-dan hazırda istifadə edib-etmədiyini yoxlamaq mümkün deyil. Sistem metodu checkSelfPermission yalnız təhlükəli icazələr üçün işləyir. Normal üçün o həmişə PERMISSION_GRANTED qaytarır, bu da real aktivliyi əks etdirmir. Bunu təhlükəsizlik auditi və proqram davranışının təhlili zamanı nəzərə almaq lazımdır.

Həmçinin yadda saxlamaq lazımdır ki, bəzi cihaz istehsalçıları (Xiaomi, Huawei, Samsung) icazələrin standart davranışını dəyişdirir. Onların proşivkalarında Normal Permission MIUI və ya EMUI markalı qabığında əlavə icazələr tələb edə bilər. Tərtibatçılara müxtəlif istehsalçıların real cihazlarında işi sınaqdan keçirmək tövsiyə olunur.

Tez-tez verilən suallar

Normal Permission Dangerous-dən nə ilə fərqlənir?

Normal Permission quraşdırma zamanı dialoq olmadan avtomatik təmin edilir. Dangerous istifadəçinin açıq razılığı ilə runtime sorğusu tələb edir və parametrlər vasitəsilə ləğv edilə bilər. Normal ProtectionLevel normal, Dangerous isə protectionLevel dangerous istifadə edir.

Normal Permission üçün kod yazmaq lazımdırmı?

Xeyr, normal icazələr üçün AndroidManifest.xml-də uses-permission bəyan etmək kifayətdir. Sorğu üçün kod tələb olunmur — sistem girişi avtomatik təmin edir. Bu, ActivityCompat.requestPermissions tələb edən təhlükəli icazələrdən fərqləndirir.

Hansı Normal Permission ən populyardır?

Ən çox istifadə olunanlar: INTERNET (şəbəkə sorğuları), ACCESS_NETWORK_STATE (qoşulmanın yoxlanılması), VIBRATE (toxunma rəyi) və WAKE_LOCK (prosessorun saxlanması). Praktiki olaraq hər Android proqramı ən azı INTERNET-dən istifadə edir.

Normal Permission ləğv edilə bilərmi?

Xeyr, Normal Permission proqram parametrləri vasitəsilə ləğv edilə bilməz. Girişi dayandırmağın yeganə yolu proqramı silməkdir. Bu, istifadəçinin istənilən vaxt söndürə biləcəyi təhlükəli icazələrdən əsas fərqdir.

İcazənin ProtectionLevel-ni necə yoxlamaq olar?

PackageManager.getPermissionInfo istifadə edin, icazənin adını ötürün. Metod protectionLevel sahəsi olan PermissionInfo qaytarır. Kateqoriyanı müəyyən etmək üçün PermissionInfo.PROTECTION_NORMAL və ya PROTECTION_DANGEROUS sabitləri ilə müqayisə edin.

Nəticə

  • Normal Permission — ProtectionLevel normal olan, quraşdırma zamanı avtomatik verilən Android icazələri kateqoriyası.
  • Bəyan etmək üçün AndroidManifest.xml-də runtime kodu olmadan uses-permission teqi kifayətdir.
  • Təhlükəli olanlardan dialoqun olmaması, ləğv edilə bilməməsi və aşağı risk səviyyəsi ilə fərqlənir.
  • Ən populyarları: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE və WAKE_LOCK.
  • ProtectionLevel kodda PackageManager.getPermissionInfo vasitəsilə yoxlanılır.
  • Normal icazələr proqram parametrləri ekranında göstərilmir.
  • Kitabxanalardan istifadə edərkən Manifest Merger vasitəsilə yekun manifesti yoxlamaq lazımdır.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun