Android में Normal Permission — यह क्या है, सुरक्षा स्तर और कार्य सिद्धांत

लेखक: IT Sectr प्रकाशित: 2026-05-20 पढ़ने का समय: 8 मिनट

Normal Permission Android में अनुमतियों की एक श्रेणी है जो सिस्टम उपयोगकर्ता से पूछे बिना स्वचालित रूप से प्रदान करता है। Android Developer Documentation, 2024 के अनुसार, सामान्य अनुमतियों में ProtectionLevel normal होता है और खतरनाक अनुमतियों के विपरीत, उन्हें runtime संवाद की आवश्यकता नहीं होती। उनमें इंटरनेट, नेटवर्क स्थिति और कंपन तक पहुंच शामिल है, जो उपयोगकर्ता के संवेदनशील डेटा के लिए जोखिम पैदा नहीं करतीं।

मुख्य बातें

  • Normal Permission एक Android अनुमति श्रेणी है जिसका ProtectionLevel normal होता है, जो इंस्टालेशन पर स्वचालित रूप से प्रदान की जाती है।
  • इसका उपयोग करने के लिए बस मैनिफेस्ट में uses-permission जोड़ना काफी है — उपयोगकर्ता को कोई संवाद नहीं दिखाया जाता।
  • खतरनाक अनुमतियों से मुख्य अंतर runtime अनुरोध का अभाव और सेटिंग्स के माध्यम से रव्क करने में असमर्थता है।
  • सूची में 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 प्रतिशत सिस्टम अनुमतियाँ सामान्य श्रेणी में आती हैं।

एक महत्वपूर्ण गुण — सामान्य अनुमतियों को सेटिंग्स के माध्यम से runtime में रव्क नहीं किया जा सकता। यदि उपयोगकर्ता पहुंच को प्रतिबंधित करना चाहता है, तो एकमात्र तरीका एप्लिकेशन को हटाना है। डेवलपर्स को आर्किटेक्चर में इसे ध्यान में रखना चाहिए, लेकिन उपयोगकर्ताओं के लिए यह दृष्टिकोण अंतरक्रिया को सरल बनाता है: पहली लॉन्च पर कोई संवाद नहीं।

श्रेणी का इतिहास

सामान्य और खतरनाक अनुमतियों में विभागन Android 6.0 Marshmallow (API 23) में दिखाई दिया। इस संस्करण से पहले, सभी अनुमतियाँ इंस्टालेशन पर अनुरोधित की जाती थीं — उपयोगकर्ता एक सूची देखता था और इसे पूरी तरह से स्वीकार या अस्वीकार करता था। Normal Permission ने निम्न-जोखिम कार्यों के लिए इस मॉडल को बनाये रखा, जबकि Dangerous runtime अनुरोध पर स्विच कर गया। इस बदलाव ने उपयोगकर्ता अनुभव में सुधार किया और साथ ही सुरक्षा में वृद्धि की।

कौन सी 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 vs Dangerous Permission

Normal और Dangerous Permission Android में सुरक्षा की दो विपरीत श्रेणियाँ हैं। मुख्य अंतर प्रदान की विधि में है: सामान्य अनुमतियाँ इंस्टालेशन पर स्वचालित रूप से दी जाती हैं, खतरनाक अनुमतियों को runtime संवाद के माध्यम से स्पष्ट सहमति की आवश्यकता होती है। यह अंतर Android 6.0 Marshmallow संस्करण से शुरू होकर Android सुरक्षा आर्किटेक्चर में निर्मित है।

मुख्य विशेषताओं की तुलना:

विशेषताNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
उपयोगकर्ता अनुरोधआवश्यक नहींruntime संवाद अनिवार्य
रव्क की क्षमतानहीं, केवल एप्लिकेशन हटाने परहाँ, किसी भी समय सेटिंग्स के माध्यम से
कोड में जाँचहमेशा 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+ पर runtime अनुरोद के साथ एक खतरनाक अनुमति बन गया, हालाँकि पुराने संस्करणों पर यह सामान्य था। डेवलपर्स को दस्तावेज़ीकरण के माध्यम से लक्ष्य 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 से भिन्न है, तो runtime अनुरोध की आवश्यकता होगी। INTERNET सबसे लोकप्रिय सामान्य अनुमति है, जो अधिकांश Android एप्लिकेशनों में मौजूद होता है, विशेष रूप से बे HTTP अनुरोध करते हैं या नेटवर्क से सामग्री लोड करते हैं।

पूर्ण मैनिफेस्ट का उदाहरण

सामान्य और खतरनाक अनुमतियों के साथ AndroidManifest.xml का एक पूर्ण उदाहरण अंतर को दर्शाता है: व्याकरणिक रूप से uses-permission टैग समान हैं, लेकिन runtime पर 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 को उपयोगकर्ता की स्पष्ट सहमति के साथ runtime अनुरोध की आवश्यकता होती है और इसे सेटिंग्स के माध्यम से रव्क किया जा सकता है। 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 का उपयोग करें, अनुमति का स्ट्रिंग नाम पास करें। यह विधि PermissionInfo को protectionLevel फ़ील्ड के साथ लौटाती है। श्रेणी निर्धारित करने के लिए इसे PermissionInfo.PROTECTION_NORMAL या PROTECTION_DANGEROUS कंस्टेंट से तुलना करें।

सारांश

  • Normal Permission ProtectionLevel normal के साथ Android अनुमतियों की एक श्रेणी है, जो इंस्टालेशन पर स्वचालित रूप से प्रदान की जाती है।
  • घोषणा के लिए runtime कोड के बिना AndroidManifest.xml में uses-permission टैग काफी है।
  • ये खतरनाक अनुमतियों से संवाद की अनुपस्थिति, रव्क करने में असमर्थता और निम्न जोखिम स्तर में भिन्न हैं।
  • सबसे लोकप्रिय: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE और WAKE_LOCK।
  • ProtectionLevel को कोड में PackageManager.getPermissionInfo के माध्यम से जाँचा जाता है।
  • सामान्य अनुमतियाँ एप्लिकेशन सेटिंग्स स्क्रीन में प्रदर्शित नहीं होतीं।
  • लाइब्रेरीज का उपयोग करते समय, Manifest Merger के माध्यम से अंतिम मैनिफेस्ट की जाँच करें।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें