PermissionController

PermissionController के मुख्य मॉड्यूल में, निजता नीतियां और अनुमतियां देने और मैनेज करने से जुड़ा यूज़र इंटरफ़ेस (यूआई) शामिल होता है. उदाहरण के लिए, अनुमतियां देने और मैनेज करने के लिए नीतियां और यूआई.

PermissionController के बारे में जानकारी

PermissionController मॉड्यूल, अनुमति से जुड़े यूज़र इंटरफ़ेस (यूआई), लॉजिक, और भूमिकाओं को मैनेज करता है, ताकि किसी खास मकसद के लिए ऐप्लिकेशन को ऐक्सेस करने की अनुमति दी जा सके. यह इन चीज़ों को कंट्रोल करता है:

  • रनटाइम की अनुमति देना (इसमें सिस्टम ऐप्लिकेशन को अनुमति देना भी शामिल है)
  • रनटाइम की अनुमतियों का मैनेजमेंट (इसमें अनुमतियों को ग्रुप करना भी शामिल है)
  • रनटाइम की अनुमति के इस्तेमाल को ट्रैक करना
  • भूमिकाएं

Android 12 से, Role के लिए फ़्रेमवर्क और सिस्टम सर्वर क्लास को मॉड्यूल में ले जाया गया है, ताकि Role को पूरी तरह मॉड्यूलर बनाया जा सके.

Android 10 में, पैकेज इंस्टॉलर ऐप्लिकेशन को सेक्शन में बांटा गया है, ताकि अनुमतियों के लॉजिक को अपडेट किया जा सके. PermissionController, अपडेट किए जा सकने वाले मेनलाइन मॉड्यूल के तौर पर:

  • यह फ़्रेमवर्क के साथ सिर्फ़ @SystemApi के ज़रिए इंटरैक्ट करता है. इसमें @hide API का इस्तेमाल नहीं किया जाता.
  • अनुमति से जुड़े इंटेंट को प्राथमिकता > 0 के साथ मैनेज करता है.
  • OEM को थीम को पसंद के मुताबिक बनाने की सुविधा देने के लिए, एक तरीका उपलब्ध कराता है.
  • यह ऐसी सेवाएं उपलब्ध कराता है जिनसे सिस्टम और ऐप्लिकेशन बंधे हो सकते हैं. इनमें भूमिका मैनेजमेंट, अनुमति रद्द करना, और सेटिंग के लिए अनुमति की बुनियादी जानकारी शामिल है.
  • इस्तेमाल न किए जा रहे ऐप्लिकेशन के लिए, अनुमतियां अपने-आप वापस लेने की सुविधा (Android 11 में नई सुविधा).

Android 9 में, अनुमति कंट्रोल करने की सुविधा com.android.packageinstaller का हिस्सा है.

इस्तेमाल न किए जा रहे ऐप्लिकेशन के लिए, अनुमतियां अपने-आप वापस लेना

Android 11 में, PermissionsController मॉड्यूल उन ऐप्लिकेशन के लिए, रनटाइम की अनुमतियां अपने-आप रद्द कर सकता है जिन्हें लंबे समय से इस्तेमाल नहीं किया गया है. SDK टूल 30 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, अपने-आप रद्द होने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. वहीं, SDK टूल 29 या इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, अपने-आप रद्द होने की सुविधा डिफ़ॉल्ट रूप से बंद होती है. इस सुविधा के चालू होने पर, रनटाइम की सभी अनुमतियों पर असर पड़ता है. हालांकि, पहले से दी गई सभी अनुमतियों पर इसका असर नहीं पड़ता. इनमें नीति और सिस्टम से जुड़ी अनुमतियां, डिफ़ॉल्ट रूप से या भूमिका के हिसाब से दी गई अनुमतियां शामिल हैं. ज़्यादा जानकारी के लिए, इस्तेमाल नहीं किए जा रहे ऐप्लिकेशन से अनुमतियां अपने-आप रीसेट होने की सुविधा देखें.

पैकेज का फ़ॉर्मैट

रिलीज़ के हिसाब से, PermissionController मॉड्यूल का फ़ॉर्मैट अलग-अलग होता है.

  • Android 11 या इसके बाद के वर्शन में, PermissionController मॉड्यूल APEX फ़ॉर्मैट में होता है और इसे अपडेट किया जा सकता है. पैकेज का नाम com.google.android.permission है.

  • Android 10 में, PermissionController मॉड्यूल APK फ़ॉर्मैट में है और इसे अपडेट नहीं किया जा सकता. पैकेज का नाम com.google.android.permissioncontroller है.

मॉड्यूल की सीमा

Android 12 में, अनुमति वाले मॉड्यूल का कोड packages/apps/PermissionController (platform/packages/apps/PackageInstaller प्रोजेक्ट) और frameworks/base/apex/permission (यह frameworks/base प्रोजेक्ट की सबडायरेक्ट्री है) से हटा दिया गया है.

packages/modules/Permission के लिए प्रोजेक्ट का नया स्ट्रक्चर इस तरह का है:

  • frameworks/base/apex/permission की फ़ाइलें
  • packages/apps/PermissionController से मिली PermissionController फ़ाइलें

OEM, अपने पैच को ओरिजनल प्रोजेक्ट डायरेक्ट्री से नई प्रोजेक्ट डायरेक्ट्री में ले जाने के लिए, सैंपल निर्देशों का इस्तेमाल कर सकते हैं.

किसी पैच को frameworks/base/apex/permission से किसी दूसरे फ़ोल्डर में ले जाना

root/frameworks/base/$ git format-patch -1 --relative=apex/permission commit --stdout > patch-file.txt

root/packages/modules/Permission$ git am -p2 patch-file.txt

पैच को packages/apps/PermissionController से किसी दूसरे फ़ोल्डर में ले जाना

root/packages/apps/PermissionController$ git format-patch -1 commit --stdout > patch-file.txt

root/packages/modules/Permission$ git am -p2 --directory=PermissionController patch-file.txt

पसंद के मुताबिक बनाएं

OEM, रनटाइम रिसॉर्स ओवरले (आरआरओएस) का इस्तेमाल करके, अनुमतियों के यूज़र इंटरफ़ेस (यूआई) की थीम (रंग, मार्जिन, फ़ॉन्ट, और ड्रॉबल) को पसंद के मुताबिक बना सकते हैं.