PermissionController

PermissionController Mainline মডিউলে গোপনীয়তা নীতি এবং অনুমতি দেওয়া ও ম্যানেজ করা সম্পর্কিত UI (যেমন, অনুমতি দেওয়া ও ম্যানেজ করার জন্য নীতি ও UI) থাকে।

PermissionController সম্পর্কে

PermissionController মডিউল নির্দিষ্ট উদ্দেশ্যে অ্যাপকে অ্যাক্সেস দেওয়ার জন্য অনুমতি-সম্পর্কিত UI, লজিক ও ভূমিকা ম্যানেজ করে। এটি নিম্নলিখিত বিষয়গুলি নিয়ন্ত্রণ করে:

  • রানটাইম অনুমতি প্রদান (সিস্টেম অ্যাপে অনুমতি প্রদান সহ)
  • রানটাইম অনুমতি ম্যানেজমেন্ট (অনুমতির গ্রুপিং সহ)
  • রানটাইম অনুমতি ব্যবহার ট্র্যাক করা
  • ভূমিকা

Android 12 থেকে শুরু করে, Role-এর জন্য ফ্রেমওয়ার্ক ও সিস্টেম সার্ভার ক্লাস মডিউলে সরানো হয়েছে যাতে Role সম্পূর্ণ মডিউলার করা যায়।

Android 10-এ, প্যাকেজ ইনস্টলার অ্যাপটি বিভিন্ন বিভাগে বিভক্ত করা হয়েছে যাতে অনুমতির লজিক আপডেট করা যায়। আপডেট করা যাবে এমন Mainline মডিউল হিসেবে, PermissionController:

  • শুধুমাত্র স্থিতিশীল @SystemApi-এর মাধ্যমে ফ্রেমওয়ার্কের সাথে ইন্টার‍্যাক্ট করে (কোনও @hide API ব্যবহার করা হয় না)।
  • অগ্রাধিকার > ০ সহ অনুমতি-সম্পর্কিত ইনটেন্ট ম্যানেজ করে।
  • OEM-কে থিমিং কাস্টমাইজ করার সুবিধা দেওয়ার জন্য একটি মেকানিজম প্রকাশ করে।
  • সিস্টেম ও অ্যাপ্লিকেশন যে পরিষেবার সাথে বাইন্ড করতে পারে, তা প্রদান করে, এর মধ্যে রয়েছে ভূমিকা ম্যানেজমেন্ট, অনুমতি প্রত্যাহার এবং প্রাথমিক অনুমতি সংক্রান্ত তথ্য (জন্য সেটিংস)।
  • অব্যবহৃত অ্যাপের ক্ষেত্রে অটোমেটিক অনুমতি তুলে নেওয়ার সুবিধা কাজ করে (Android 11-এ নতুন)।

Android9-এ, অনুমতি নিয়ন্ত্রণ 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-এ, Permission মডিউল কোড 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 রানটাইম রিসোর্স ওভারলে (RROS) ব্যবহার করে অনুমতি UI থিম (রঙ, মার্জিন, ফন্ট এবং ড্রয়েবল) কাস্টমাইজ করতে পারে।