Android میں Normal Permission — یہ کیا ہے، تحفظ کی سطحیں اور کام کرنے کا اصول

مصنف: IT Sectr اشاعت: 2026-05-20 مطالعے کا وقت: 8 منٹ

Normal Permission Android میں اجازتوں کا ایک زمرہ ہے جو سسٹم صارف سے پوچھے بغیر خودکار طور پر فراہم کرتا ہے۔ Android Developer Documentation, 2024 کے مطابق، عام اجازتیں ProtectionLevel normal رکھتی ہیں اور خطرناک اجازتوں کے برعکس رن ٹائم ڈائیلاگ کی ضرورت نہیں ہوتی۔ یہ انٹرنیٹ، نیٹ ورک کی حالت اور وائبریشن تک رسائی کا احاطہ کرتی ہیں، صارف کے حساس ڈیٹا کے لیے خطرہ پیدا کیے بغیر۔

اہم نکات

  • Normal Permission ProtectionLevel normal کے ساتھ Android اجازتوں کا ایک زمرہ ہے، جو انسٹالیشن پر خودکار طور پر فراہم کی جاتی ہیں۔
  • استعمال کرنے کے لیے مینی فیسٹ میں uses-permission شامل کرنا کافی ہے — صارف کو کوئی ڈائیلاگ نہیں دکھایا جاتا۔
  • خطرناک اجازتوں سے بنیادی فرق رن ٹائم درخواست کی عدم موجودگی اور ترتیبات کے ذریعے منسوخی کا امکان نہ ہونا ہے۔
  • فہرست میں INTERNET، ACCESS_NETWORK_STATE، VIBRATE، ACCESS_WIFI_STATE اور دیگر سسٹم کنسٹنٹ شامل ہیں۔
  • آپ ایپلیکیشن کوڈ میں PackageManager.getPermissionInfo کے ذریعے تحفظ کی سطح جانچ سکتے ہیں۔

Android میں Normal Permission کیا ہے

Normal Permission Android میں ProtectionLevel normal کے ساتھ ایک سسٹم اجازت کی قسم ہے، جو انسٹالیشن کے وقت ایپلیکیشن کو خودکار طور پر فراہم کی جاتی ہے۔ ڈیولپر کو اس کی درخواست کرنے کے لیے کوڈ لکھنے کی ضرورت نہیں — بس AndroidManifest.xml میں اجازت کا اعلان کرنا کافی ہے۔ صارف کوئی ڈائیلاگ نہیں دیکھتا اور وہ کسی عام اجازت کو الگ سے منسوخ نہیں کر سکتا، صرف پوری ایپلیکیشن کو ان انسٹال کر کے۔

Android سسٹم عام اجازتوں کو کم خطرہ قرار دیتا ہے — یہ ذاتی ڈیٹا، کیمرہ یا مائیکروفون تک رسائی فراہم نہیں کرتیں۔ عام مثالیں: انٹرنیٹ رسائی، وائبریشن کنٹرول، Wi-Fi حالت پڑھنا۔ Android Security Model (2024) کے مطابق، تقریباً 40 فیصد تمام سسٹم اجازتیں عام زمرے میں آتی ہیں۔

ایک اہم خاصیت — عام اجازتیں ترتیبات کے ذریعے رن ٹائم میں منسوخ نہیں کی جا سکتیں۔ اگر صارف رسائی سے انکار کرنا چاہے، تو واحد طریقہ ایپلیکیشن کو ان انسٹال کرنا ہے۔ ڈیولپرز کو آرکیٹیکچر میں اسے مدنظر رکھنا چاہیے، لیکن صارفین کے لیے یہ طریقہ تعامل کو آسان بناتا ہے: پہلی لانچ پر کوئی ڈائیلاگ نہیں۔

زمرے کی تاریخ

عام اور خطرناک اجازتوں میں تقسیم Android 6.0 Marshmallow (API 23) میں ظاہر ہوئی۔ اس ورژن سے پہلے، تمام اجازتیں انسٹالیشن پر مانگی جاتی تھیں — صارف ایک واحد فہرست دیکھتا اور اسے مکمل طور پر قبول یا مسترد کرتا۔ Normal Permission نے کم خطرہ والے کاموں کے لیے یہ ماڈل برقرار رکھا، جبکہ Dangerous رن ٹائم درخواست پر منتقل ہو گیا۔ اس تبدیلی نے صارف کے تجربے کو بہتر کیا اور ساتھ ہی سیکیورٹی میں اضافہ کیا۔

کون سی API کو Normal Permission کی ضرورت ہے

بہت سے Android سسٹم API کو ایک عام اجازت کے واضح اعلان کی ضرورت ہوتی ہے، چاہے رسائی خودکار ہو۔ مثال کے طور پر، ConnectivityManager کلاس کو ACCESS_NETWORK_STATE درکار ہے، VibratorService کو VIBRATE، WifiManager کو ACCESS_WIFI_STATE۔ متعلقہ uses-permission کے اعلان کے بغیر، ان API کو کال کرنے سے SecurityException پیدا ہوگا۔

ProtectionLevel normal کیسے کام کرتا ہے

ProtectionLevel normal Android اجازت کے نظام میں کم سے کم تحفظ کی سطح ہے۔ اس سطح کی اجازتیں مینی فیسٹ میں اعلان کی جاتی ہیں، اور سسٹم انسٹالیشن پر اعلان کی تصدیق کرتا ہے، صارف کی مداخلت کے بغیر رسائی فراہم کرتا ہے۔ کوئی UI عنصر نہیں دکھایا جاتا، کوئی کال بیک نہیں بلایا جاتا۔

تصدیقی طریقہ کار PackageManager کی سطح پر کام کرتا ہے۔ APK انسٹالیشن کے دوران، سسٹم تمام uses-permission ٹیگز کو اسکین کرتا ہے، permissions.xml فائلوں میں سسٹم کی تعریفوں سے ملا کر ہر اجازت کی تحفظ کی سطح متعین کرتا ہے، اور عام سطح کے لیے صرف رسائی رجسٹر کرتا ہے۔ یہ عمل ملی سیکنڈز لیتا ہے اور صارف انٹرفیس کے ساتھ کسی تعامل کی ضرورت نہیں ہوتی۔

فراہمی کا الگورتھم اس طرح کام کرتا ہے:

  • سسٹم ایپلیکیشن انسٹالیشن کے وقت مینی فیسٹ پڑھتا ہے
  • یہ ڈیوائس پر /etc/permissions/ میں protectionLevel کو ملاتا ہے
  • اگر قیمت normal ہے — خودکار طور پر رسائی فراہم کرتا ہے
  • اجازت اس وقت تک فعال رہتی ہے جب تک ایپلیکیشن مکمل طور پر ان انسٹال نہ ہو جائے

صارف انٹرفیس کے ذریعے عام اجازت کو منسوخ نہیں کر سکتا۔ ایپلیکیشن کی ترتیبات کے اجازت والے حصے میں، صرف خطرناک اجازتیں دکھائی جاتی ہیں۔ یہ iOS کے برعکس ہے، جہاں ہر اجازت کو فنکشن کی حساسیت کی سطح سے قطع نظر الگ تصدیق کی ضرورت ہوتی ہے۔

Normal Permission بمقابلہ Dangerous Permission

Normal اور Dangerous Permission Android میں تحفظ کے دو متضاد زمرے ہیں۔ بنیادی فرق فراہمی کے طریقے میں ہے: عام اجازتیں انسٹالیشن پر خودکار طور پر دی جاتی ہیں، خطرناک اجازتوں کو رن ٹائم ڈائیلاگ کے ذریعے واضح رضامندی درکار ہوتی ہے۔ یہ فرق Android 6.0 Marshmallow ورژن سے Android سیکیورٹی آرکیٹیکچر میں شامل ہے۔

اہم خصوصیات کا موازنہ:

خصوصیتNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
صارف کی درخواستضروری نہیںرن ٹائم ڈائیلاگ لازمی
منسوخی کا امکاننہیں، صرف ایپ ان انسٹالہاں، کسی بھی وقت ترتیبات سے
کوڈ میں جانچہمیشہ PERMISSION_GRANTEDcheckSelfPermission لازمی
مثالیںINTERNET، VIBRATE، ACCESS_NETWORK_STATECAMERA، RECORD_AUDIO، ACCESS_FINE_LOCATION

صارف کی درخواست میں فرق

صارف Normal Permission کی درخواست کرتے وقت کوئی ڈائیلاگ نہیں دیکھتا۔ اگر ایپ کو INTERNET کی ضرورت ہے — وہ خاموشی سے حاصل کرتی ہے۔ Dangerous Permission کے لیے، سسٹم درخواست کردہ رسائی کی وضاحت کے ساتھ ایک موڈل ڈائیلاگ دکھاتا ہے۔ صارف اجازت دیں یا مسترد کریں دباتا ہے، اور بعد میں کسی بھی وقت ترتیبات کے ذریعے اجازت منسوخ کر سکتا ہے۔ یہ ایک اہم UX فرق ہے جو انٹرفیس ڈیولپمنٹ کی حکمت عملی متعین کرتا ہے۔

Normal کب انتخاب کریں

Normal کو ان تمام صورتوں میں استعمال کرنا چاہیے جہاں رسائی کا تعلق حساس ڈیٹا سے نہ ہو۔ کنیکٹیویٹی چیک کرنے کے لیے ACCESS_NETWORK_STATE، ہیپٹک فیڈبیک کے لیے VIBRATE، HTTP درخواستوں کے لیے INTERNET — یہ سب عام اجازتیں ہیں۔ جہاں normal کافی ہو وہاں dangerous سطح کا استعمال برا عمل ہے، جو غیر ضروری ڈائیلاگ بناتا ہے اور ایپلیکیشن میں صارف کا اعتماد کم کرتا ہے۔

Android میں عام اجازتوں کی فہرست

Android تعریف کرتا ہے درجنوں عام اجازتیں، ہر ایک ایک مخصوص سسٹم فنکشن کے مطابق۔ یہ سب Manifest.permission کلاس کے کنسٹنٹ کے ذریعے دستیاب ہیں۔ نیچے ایپلیکیشن ڈیولپمنٹ میں سب سے زیادہ استعمال ہونے والی اجازتوں کی فہرست دی گئی ہے۔

کنسٹنٹرسائیوضاحت
INTERNETنیٹ ورکHTTP درخواستوں کے لیے نیٹ ورک ساکٹ کھولنا
ACCESS_NETWORK_STATEنیٹ ورکنیٹ ورک کی حالت کے بارے میں معلومات حاصل کرنا
ACCESS_WIFI_STATEWi-FiWi-Fi کنکشنز کے بارے میں معلومات پڑھنا
VIBRATEوائبریشنڈیوائس وائبریٹر کو کنٹرول کرنا
BLUETOOTHBluetoothBluetooth ڈیوائسز سے کنیکٹ ہونا
WAKE_LOCKپاورپروسیسر کو سلیپ موڈ میں جانے سے روکنا
SET_ALARMالارمAlarmManager کے ذریعے الارم سیٹ کرنا
CHANGE_NETWORK_STATEنیٹ ورکنیٹ ورک کنکشن کی حالت تبدیل کرنا

عام اجازتوں کے گروپ

عام اجازتیں UI ڈسپلے مقاصد کے لیے Permission Group میں گروپ نہیں ہوتیں۔ Android میں گروپ ترتیبات کی اسکرین کے لیے ہوتے ہیں، جہاں صرف خطرناک اجازتیں دکھائی جاتی ہیں۔ تاہم، عام اجازتوں کو منطقی طور پر زمروں میں تقسیم کیا جا سکتا ہے: نیٹ ورک (INTERNET، ACCESS_NETWORK_STATE)، ہارڈویئر (VIBRATE، WAKE_LOCK)، سسٹم (SET_ALARM) اور Bluetooth اجازتیں۔

Manifest.permission کے کچھ کنسٹنٹ Android کے مختلف ورژنز پر اپنی تحفظ کی سطح تبدیل کر سکتے ہیں۔ مثال کے طور پر، BLUETOOTH_CONNECT Android 12+ پر رن ٹائم درخواست کے ساتھ ایک خطرناک اجازت بن گیا، جبکہ پرانے ورژنز پر یہ عام تھا۔ ڈیولپرز کو دستاویزات کے ذریعے ہدف API کے لیے موجودہ protectionLevel چیک کرنے کی سفارش کی جاتی ہے۔

PackageManager کے ذریعے Normal Permission کی جانچ

ایک ڈیولپر PackageManager کے ذریعے پروگراماتی طور پر جانچ سکتا ہے کہ آیا کوئی اجازت عام ہے۔ getPermissionInfo طریقہ PermissionInfo لوٹاتا ہے جس کے protectionLevel فیلڈ میں PermissionInfo.PROTECTION_NORMAL پرچم ہوتا ہے۔ یہ ڈائنامک ہینڈلنگ اور ڈیبگنگ کے لیے مفید ہے۔

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

مینی فیسٹ میں Normal Permission کا اعلان کیسے کریں

Normal Permission کا اعلان AndroidManifest.xml میں سب سے آسان عمل ہے، جس میں صرف ایک uses-permission ٹیگ کی ضرورت ہوتی ہے۔ اضافی protectionLevel کنفیگریشن کی ضرورت نہیں، کیونکہ تحفظ کی سطح سسٹم کی تعریف سے متعین ہوتی ہے، ایپلیکیشن مینی فیسٹ سے نہیں۔ ڈیولپر صرف کنسٹنٹ کا مکمل نام بتاتا ہے۔

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

سسٹم انسٹالیشن پر تمام اعلانات پر کارروائی کرتا ہے۔ اگر اعلان کردہ اجازتوں میں سے کم از کم ایک کا protectionLevel normal سے مختلف ہو، تو رن ٹائم درخواست کی ضرورت ہوگی۔ INTERNET سب سے مقبول عام اجازت ہے، جو زیادہ تر Android ایپلیکیشنز میں موجود ہے، خاص طور پر وہ جو HTTP درخواستیں کرتی ہیں یا نیٹ ورک سے مواد لوڈ کرتی ہیں۔

مکمل مینی فیسٹ کی مثال

عام اور خطرناک اجازتوں کے ساتھ AndroidManifest.xml کی ایک مکمل مثال فرق کو ظاہر کرتی ہے: نحوی طور پر uses-permission ٹیگز ایک جیسے ہیں، لیکن رن ٹائم پر INTERNET اور VIBRATE خودکار طور پر فراہم کی جائیں گی، جبکہ CAMERA کو ڈائیلاگ کی ضرورت ہوگی۔

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 اور Normal Permission

لائبریریز (Google Play Services، Firebase، Glide) استعمال کرتے وقت، وہ Manifest Merger کے ذریعے حتمی مینی فیسٹ میں اپنے uses-permission شامل کر سکتی ہیں۔ ان میں سے کچھ عام (Firebase کے لیے INTERNET)، دیگر خطرناک (Google Maps کے لیے ACCESS_FINE_LOCATION) ہیں۔ ڈیولپر کو اشاعت سے پہلے build/outputs/logs/manifest-merger-report.txt میں حتمی ضم شدہ مینی فیسٹ چیک کرنا چاہیے۔

Normal Permission کی حدود

Normal Permission کی دو بنیادی حدود ہیں: صارف کے ذریعے منسوخی کا امکان نہ ہونا اور انتظامی UI کی عدم موجودگی۔ اگر صارف ایپلیکیشن پر بھروسہ نہ کرے لیکن عام اجازت پہلے ہی خودکار طور پر فراہم کی جا چکی ہو — واحد حل ایپلیکیشن کو ان انسٹال کرنا ہے۔ یہ ایک خاص خطرہ پیدا کرتا ہے، کیونکہ عام اجازتوں کو Android کے معیاری ذرائع سے مسدود نہیں کیا جا سکتا۔

ایک اضافی حد متعدد پروفائلز (Work Profile، Multiple Users) والے ڈیوائسز پر ظاہر ہوتی ہے۔ Normal Permission تمام پروفائلز کو ایک ساتھ فراہم کی جاتی ہے — ایپلیکیشن اجازت کو صرف ایک تک محدود نہیں کر سکتی۔ انٹرپرائز منظرناموں میں، یہ Managed Configurations کے ذریعے حل کیا جاتا ہے۔

یہ جانچنا ممکن نہیں کہ آیا ایپلیکیشن کسی خاص وقت پر Normal Permission استعمال کر رہی ہے۔ سسٹم کا طریقہ checkSelfPermission صرف خطرناک اجازتوں کے لیے کام کرتا ہے۔ عام اجازتوں کے لیے یہ ہمیشہ PERMISSION_GRANTED لوٹاتا ہے، جو حقیقی سرگرمی کو ظاہر نہیں کرتا۔ سیکیورٹی آڈٹ اور ایپلیکیشن رویے کے تجزیہ کے دوران اسے مدنظر رکھنا چاہیے۔

یہ بھی یاد رکھنا چاہیے کہ کچھ ڈیوائس مینوفیکچررز (Xiaomi، Huawei، Samsung) اجازتوں کے معیاری رویے میں تبدیلی کرتے ہیں۔ ان کے فرم ویئر پر، Normal Permission کو MIUI یا EMUI شیل میں اضافی اجازتوں کی ضرورت ہو سکتی ہے۔ ڈیولپرز کو مختلف وینڈرز کے حقیقی ڈیوائسز پر جانچ کرنے کی سفارش کی جاتی ہے۔

اکثر پوچھے گئے سوالات

Normal Permission، Dangerous سے کیسے مختلف ہے؟

Normal Permission انسٹالیشن پر ڈائیلاگ کے بغیر خودکار طور پر فراہم کی جاتی ہے۔ Dangerous کو صارف کی واضح رضامندی کے ساتھ رن ٹائم درخواست درکار ہوتی ہے اور ترتیبات کے ذریعے منسوخ کیا جا سکتا ہے۔ Normal ProtectionLevel normal استعمال کرتی ہے، Dangerous protectionLevel dangerous استعمال کرتی ہے۔

کیا مجھے Normal Permission کے لیے کوڈ لکھنے کی ضرورت ہے؟

نہیں، عام اجازتوں کے لیے AndroidManifest.xml میں uses-permission کا اعلان کرنا کافی ہے۔ درخواست کوڈ کی ضرورت نہیں — سسٹم خودکار طور پر رسائی فراہم کرتا ہے۔ یہ انہیں خطرناک اجازتوں سے الگ کرتا ہے، جہاں ActivityCompat.requestPermissions کی ضرورت ہوتی ہے۔

کون سی Normal Permission سب سے زیادہ مقبول ہیں؟

سب سے زیادہ استعمال ہونے والی: INTERNET (نیٹ ورک کی درخواستیں)، ACCESS_NETWORK_STATE (کنکشن چیک)، VIBRATE (ہیپٹک فیڈبیک) اور WAKE_LOCK (پروسیسر کو بیدار رکھنا)۔ تقریباً ہر Android ایپلیکیشن کم از کم INTERNET استعمال کرتی ہے۔

کیا Normal Permission منسوخ کی جا سکتی ہے؟

نہیں، Normal Permission ایپلیکیشن کی ترتیبات کے ذریعے منسوخ نہیں کی جا سکتی۔ رسائی روکنے کا واحد طریقہ ایپلیکیشن کو ان انسٹال کرنا ہے۔ یہ خطرناک اجازتوں سے ایک بنیادی فرق ہے، جنہیں صارف کسی بھی وقت غیر فعال کر سکتا ہے۔

اجازت کا ProtectionLevel کیسے چیک کریں؟

PackageManager.getPermissionInfo استعمال کریں، اجازت کا سٹرنگ نام دیں۔ طریقہ protectionLevel فیلڈ کے ساتھ PermissionInfo لوٹاتا ہے۔ زمرہ متعین کرنے کے لیے اسے PermissionInfo.PROTECTION_NORMAL یا PROTECTION_DANGEROUS کنسٹنٹ سے موازنہ کریں۔

خلاصہ

  • Normal Permission ProtectionLevel normal کے ساتھ Android اجازتوں کا ایک زمرہ ہے، جو انسٹالیشن پر خودکار طور پر فراہم کی جاتی ہے۔
  • اعلان کے لیے رن ٹائم کوڈ کے بغیر AndroidManifest.xml میں uses-permission ٹیگ کافی ہے۔
  • یہ خطرناک اجازتوں سے ڈائیلاگ کی عدم موجودگی، منسوخی کے امکان نہ ہونے اور کم خطرے کی سطح میں مختلف ہیں۔
  • سب سے مقبول: INTERNET، ACCESS_NETWORK_STATE، VIBRATE، ACCESS_WIFI_STATE اور WAKE_LOCK۔
  • ProtectionLevel کوڈ میں PackageManager.getPermissionInfo کے ذریعے چیک کیا جاتا ہے۔
  • عام اجازتیں ایپلیکیشن کی ترتیبات کی اسکرین میں ظاہر نہیں ہوتیں۔
  • لائبریریز استعمال کرتے وقت، Manifest Merger کے ذریعے حتمی مینی فیسٹ چیک کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں