রানটাইম অনুমতি

অ্যান্ড্রয়েড 6.0 এবং উচ্চতর সংস্করণে, ব্যবহারকারীদের জন্য অনুমতিগুলিকে আরও বোধগম্য, উপযোগী এবং নিরাপদ করার জন্য অ্যান্ড্রয়েড অ্যাপ্লিকেশন অনুমতি মডেলটি ডিজাইন করা হয়েছে৷ মডেলটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে স্থানান্তরিত করেছে যেগুলির জন্য বিপজ্জনক অনুমতি প্রয়োজন ( আক্রান্ত অনুমতিগুলি দেখুন) একটি ইনস্টল-টাইম অনুমতি মডেল থেকে রানটাইম অনুমতি মডেলে:

  • ইনস্টল-টাইম অনুমতি

    ( অ্যান্ড্রয়েড 5.1 এবং তার নিচের ) ব্যবহারকারীরা অ্যাপটি ইনস্টল বা আপডেট করার সময় একটি অ্যাপকে বিপজ্জনক অনুমতি দেয়। ডিভাইস নির্মাতারা এবং বাহকরা ব্যবহারকারীকে অবহিত না করেই পূর্বানুমতি দিয়ে অ্যাপগুলি প্রি-ইন্সটল করতে পারে।

  • রানটাইম অনুমতি

    ( অ্যান্ড্রয়েড 6.0 – 9 ) যখন অ্যাপটি চলছে তখন ব্যবহারকারীরা একটি অ্যাপকে বিপজ্জনক অনুমতি দেয়। যখন অনুমতির অনুরোধ করা হয় (যেমন কখন অ্যাপটি চালু হয় বা কখন ব্যবহারকারী একটি নির্দিষ্ট বৈশিষ্ট্য অ্যাক্সেস করে) অ্যাপ্লিকেশনটির উপর নির্ভর করে, তবে ব্যবহারকারী নির্দিষ্ট অনুমতি গোষ্ঠীগুলিতে অ্যাপ্লিকেশন অ্যাক্সেস মঞ্জুর/অস্বীকার করে। OEMs/ক্যারিয়াররা অ্যাপগুলিকে প্রি-ইন্সটল করতে পারে, কিন্তু অনুমতি দিতে পারে না যদি না তারা ব্যতিক্রম প্রক্রিয়ার মধ্য দিয়ে যায়। ( ব্যতিক্রম তৈরি করা দেখুন।)

    ( অ্যান্ড্রয়েড 10 ) ব্যবহারকারীরা স্বচ্ছতা দেখতে পান এবং কোন অ্যাপে অ্যাক্টিভিটি রিকগনিশন (এআর) রানটাইম অনুমতি রয়েছে তার উপর তাদের নিয়ন্ত্রণ রয়েছে। ব্যবহারকারীদের রানটাইম অনুমতি ডায়ালগ দ্বারা অনুরোধ করা হয় হয় সর্বদা অনুমতি দিতে, ব্যবহার করার সময় অনুমতি দিতে বা অনুমতি অস্বীকার করতে। অ্যান্ড্রয়েড 10-এ একটি ওএস আপগ্রেড করার সময়, অ্যাপগুলিকে দেওয়া অনুমতিগুলি বজায় রাখা হয়, তবে ব্যবহারকারীরা সেটিংসে গিয়ে সেগুলি পরিবর্তন করতে পারেন।

রানটাইম অনুমতিগুলি ব্যবহারকারীর সম্মতি ছাড়াই অ্যাপগুলিকে ব্যক্তিগত ডেটাতে অ্যাক্সেস পেতে বাধা দেয় এবং অ্যাপ্লিকেশনগুলি যে ধরনের অনুমতিগুলি চাচ্ছে বা মঞ্জুর করা হয়েছে সেগুলির অতিরিক্ত প্রসঙ্গ এবং দৃশ্যমানতা প্রদান করে৷ রানটাইম মডেল ডেভেলপারদের উৎসাহিত করে যাতে ব্যবহারকারীদের বুঝতে সাহায্য করে যে কেন অ্যাপ্লিকেশনগুলির অনুরোধ করা অনুমতিগুলির প্রয়োজন, এবং আরও বেশি স্বচ্ছতা প্রদান করে যাতে ব্যবহারকারীরা সেগুলি প্রদান বা অস্বীকার করার বিষয়ে আরও ভাল সিদ্ধান্ত নিতে পারে।

প্রভাবিত অনুমতি

Android 6.0 এবং উচ্চতর একটি রানটাইম অনুমতি মডেল ব্যবহার করার জন্য বিপজ্জনক অনুমতি প্রয়োজন। বিপজ্জনক অনুমতিগুলি হল উচ্চ-ঝুঁকির অনুমতি (যেমন READ_CALENDAR ) যা অনুরোধকারী অ্যাপ্লিকেশনগুলিকে ব্যক্তিগত ব্যবহারকারীর ডেটাতে অ্যাক্সেস দেয়, বা একটি ডিভাইসের উপর নিয়ন্ত্রণ করে, যা ব্যবহারকারীকে নেতিবাচকভাবে প্রভাবিত করতে পারে। বিপজ্জনক অনুমতিগুলির একটি তালিকা দেখতে, কমান্ডটি চালান:

adb shell pm list permissions -g -d

অ্যান্ড্রয়েড 6.0 এবং উচ্চতর সাধারণ অনুমতির আচরণ পরিবর্তন করে না। এগুলি স্বাভাবিক, সিস্টেম এবং স্বাক্ষর অনুমতি সহ সমস্ত অ-বিপজ্জনক অনুমতি। সাধারণ অনুমতিগুলি হল নিম্ন-ঝুঁকির অনুমতি (যেমন SET_WALLPAPER ) যা অনুরোধকারী অ্যাপ্লিকেশনগুলিকে অন্যান্য অ্যাপ্লিকেশন, সিস্টেম বা ব্যবহারকারীর জন্য ন্যূনতম ঝুঁকি সহ বিচ্ছিন্ন অ্যাপ্লিকেশন-স্তরের বৈশিষ্ট্যগুলিতে অ্যাক্সেস দেয়। Android 5.1 এবং নিম্নতর রিলিজের মতো, সিস্টেমটি স্বয়ংক্রিয়ভাবে ইনস্টলেশনের সময় একটি অনুরোধকারী অ্যাপ্লিকেশনকে স্বাভাবিক অনুমতি দেয় এবং ব্যবহারকারীকে অনুমোদনের জন্য অনুরোধ করে না। অনুমতির বিশদ বিবরণের জন্য, <permission> উপাদান ডকুমেন্টেশন দেখুন।

অ্যান্ড্রয়েড 10 এ হার্ড এবং নরম সীমাবদ্ধতা

বিপজ্জনক হওয়ার পাশাপাশি, একটি অনুমতি কঠিন-সীমাবদ্ধ বা নরম-সীমাবদ্ধ হতে পারে। উভয় ক্ষেত্রেই, সীমাবদ্ধ অনুমতিকে অবশ্যই সাদা তালিকাভুক্ত করতে হবে। সাদাতালিকাবিহীন হার্ড বিধিনিষেধ অ-সাদা তালিকাভুক্ত নরম বিধিনিষেধের চেয়ে ভিন্নভাবে আচরণ করে:

  • ( কঠিন বিধিনিষেধ ) অ্যাপ্লিকেশানগুলিকে অনুমতি দেওয়া যাবে না যেগুলি সাদা তালিকাভুক্ত নয়৷
  • ( নরম সীমাবদ্ধতা ) হোয়াইটলিস্টিং ছাড়াই অ্যাপগুলি তাদের অনুরোধের নির্দিষ্ট অনুমতি অনুযায়ী আচরণ করে। অনুরোধ করা অনুমতির জন্য আচরণটি পাবলিক ডকুমেন্টেশনে বর্ণনা করা হয়েছে।

একটি অ্যাপ ইনস্টল করার সময়, ইনস্টলার (যেমন Google Play Store) অ্যাপের জন্য সীমাবদ্ধ অনুমতিগুলিকে সাদা তালিকাভুক্ত না করার জন্য নির্বাচন করতে পারে। অনুমতিগুলি প্ল্যাটফর্ম দ্বারা সীমাবদ্ধ এবং শুধুমাত্র যদি একটি অ্যাপ প্ল্যাটফর্ম নীতি অনুযায়ী বিশেষ মানদণ্ড পূরণ করে তবেই মঞ্জুরিযোগ্য৷ কঠোর-সীমাবদ্ধ অনুমতি প্রকারের উদাহরণগুলির মধ্যে SMS এবং কল লগ অনুমতি অন্তর্ভুক্ত।

হোয়াইটলিস্টিং ইন্সটলেশনের সময় এবং কখন ঘটে

  • Android 9-to-10 আপগ্রেডের সময় একটি অ্যাপ ইতিমধ্যেই ইনস্টল করা আছে।
  • একটি অনুমতি আগে থেকে দেওয়া আছে বা একটি অ্যাপ আগে থেকে ইনস্টল করা আছে।
  • অনুমতি শ্বেত তালিকাভুক্ত করার জন্য ইতিমধ্যেই সংজ্ঞায়িত একটি ভূমিকার জন্য একটি অনুমতি প্রয়োজন৷
  • ইনস্টলার (যেমন Google Play Store) অনুমতিটিকে সাদা তালিকাভুক্ত হিসাবে চিহ্নিত করে৷

ব্যবহারকারীরা ম্যানুয়ালি অনুমতিগুলিকে সাদা তালিকাভুক্ত করতে পারে না৷

প্রয়োজনীয়তা

রানটাইম পারমিশন মডেলটি সেটআপ প্রক্রিয়ার অংশ হিসাবে ডিভাইসে প্রি-ইনস্টল করা অ্যাপস এবং অ্যাপস সহ সমস্ত অ্যাপ্লিকেশনের জন্য প্রযোজ্য। অ্যাপ্লিকেশন সফ্টওয়্যার প্রয়োজনীয়তা অন্তর্ভুক্ত:

  • রানটাইম অনুমতি মডেল অবশ্যই Android 6.0 এবং উচ্চতর সংস্করণে চলমান সমস্ত ডিভাইস জুড়ে সামঞ্জস্যপূর্ণ হতে হবে। এটি অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (সিটিএস) পরীক্ষা দ্বারা প্রয়োগ করা হয়।
  • অ্যাপ্লিকেশানগুলিকে অবশ্যই ব্যবহারকারীদের রানটাইমে অ্যাপ্লিকেশন অনুমতি দেওয়ার জন্য অনুরোধ করতে হবে৷ বিস্তারিত জানার জন্য, অ্যাপ্লিকেশন আপডেট করা দেখুন। ডিফল্ট অ্যাপ্লিকেশন এবং হ্যান্ডলারদের সীমিত ব্যতিক্রমগুলি মঞ্জুর করা যেতে পারে যা ডিভাইসের প্রত্যাশিত অপারেশনের জন্য মৌলিক ডিভাইস কার্যকারিতা প্রদান করে। (উদাহরণস্বরূপ, ACTION_CALL পরিচালনার জন্য ডিভাইসের ডিফল্ট ডায়ালার অ্যাপে ফোনের অনুমতির অ্যাক্সেস থাকতে পারে।) বিস্তারিত জানার জন্য, ব্যতিক্রম তৈরি করা দেখুন।
  • বিপজ্জনক অনুমতি রয়েছে এমন প্রিলোড করা অ্যাপগুলিকে অবশ্যই API স্তর 23 টার্গেট করতে হবে এবং রানটাইম অনুমতি মডেল বজায় রাখতে হবে। অর্থাৎ, অ্যাপ ইনস্টলেশনের সময় UI ফ্লো অবশ্যই পারমিশন কন্ট্রোলারের AOSP বাস্তবায়ন থেকে বিচ্যুত হবে না, ব্যবহারকারীরা আগে থেকে ইনস্টল করা অ্যাপের বিপজ্জনক অনুমতি প্রত্যাহার করতে পারেন, ইত্যাদি।
  • হেডলেস অ্যাপ্লিকেশানগুলিকে অবশ্যই অনুমতির অনুরোধ করতে বা প্রয়োজনীয় অনুমতি আছে এমন অন্য অ্যাপ্লিকেশনের সাথে একটি UID ভাগ করতে একটি কার্যকলাপ ব্যবহার করতে হবে৷ বিস্তারিত জানার জন্য, হেডলেস অ্যাপ্লিকেশন দেখুন।

পারমিশন মাইগ্রেশন

Android 5.x-এ অ্যাপ্লিকেশানগুলিতে প্রদত্ত অনুমতিগুলি Android 6.0 বা উচ্চতর সংস্করণে আপডেট করার পরেও মঞ্জুর করা হয়, তবে ব্যবহারকারীরা যে কোনও সময় সেই অনুমতিগুলি প্রত্যাহার করতে পারেন৷

একটি অ্যান্ড্রয়েড 9-থেকে-10 আপডেটে, সমস্ত কঠোর-সীমাবদ্ধ অনুমতিগুলি সাদা তালিকাভুক্ত হয়। ফোরগ্রাউন্ড/ব্যাকগ্রাউন্ড স্প্লিট পারমিশন বাস্তবায়নের বিশদ বিবরণের জন্য, Android 10 গোপনীয়তা পরিবর্তন দেখুন, পটভূমি অবস্থানের অনুরোধের মাধ্যমে শুরু করুন।

মিশ্রণ

Android 6.0 এবং উচ্চতর সংস্করণের জন্য অ্যাপ্লিকেশন রানটাইম অনুমতি মডেল একীভূত করার সময়, আপনাকে নতুন মডেলের সাথে কাজ করার জন্য আগে থেকে ইনস্টল করা অ্যাপ্লিকেশনগুলিকে আপডেট করতে হবে৷ এছাড়াও আপনি মূল কার্যকারিতার জন্য ডিফল্ট হ্যান্ডলার/প্রোভাইডার অ্যাপগুলির জন্য ব্যতিক্রম সংজ্ঞায়িত করতে পারেন, কাস্টম অনুমতিগুলি সংজ্ঞায়িত করতে পারেন এবং PermissionController অ্যাপে ব্যবহৃত থিমটি কাস্টমাইজ করতে পারেন।

অ্যাপ্লিকেশন আপডেট করা হচ্ছে

সিস্টেম ইমেজ এবং প্রি-ইনস্টল করা অ্যাপ্লিকেশানগুলির অ্যাপ্লিকেশনগুলি স্বয়ংক্রিয়ভাবে আগে থেকে দেওয়া অনুমতিগুলি নয়৷ ডেভেলপার নির্দেশিকা ব্যবহার করে প্রয়োজনীয় অ্যাপ পরিবর্তন করতে আমরা আপনাকে পূর্ব-ইন্সটল করা অ্যাপ ডেভেলপারদের (OEM, ক্যারিয়ার, এবং তৃতীয় পক্ষ) সাথে কাজ করতে উৎসাহিত করি। বিশেষত, আপনাকে নিশ্চিত করতে হবে যে ব্যবহারকারীরা অনুমতি প্রত্যাহার করলে ক্র্যাশ এবং অন্যান্য সমস্যা এড়াতে আগে থেকে ইনস্টল করা অ্যাপ্লিকেশনগুলি সংশোধন করা হয়েছে।

প্রি-লোড করা অ্যাপ্লিকেশন

অ্যান্ড্রয়েড 9 এবং তার চেয়ে কম সময়ে, বিপজ্জনক অনুমতি ব্যবহার করে এমন প্রিলোড করা অ্যাপগুলিকে অবশ্যই API স্তর 23 বা উচ্চতর লক্ষ্য করতে হবে এবং Android 6.0 এবং উচ্চতর AOSP অনুমতি মডেল বজায় রাখতে হবে। উদাহরণস্বরূপ, একটি অ্যাপ ইনস্টলেশনের সময় UI প্রবাহটি PermissionController এর AOSP বাস্তবায়ন থেকে বিচ্যুত হওয়া উচিত নয়। এমনকি ব্যবহারকারীরা আগে থেকে ইনস্টল করা অ্যাপের বিপজ্জনক অনুমতি প্রত্যাহার করতে পারেন।

অ্যান্ড্রয়েড 6.0 থেকে 9 পর্যন্ত, ইনস্টল প্রবাহের সময় কিছু অনুমতি দেওয়া হয়। যাইহোক, 10 থেকে শুরু করে, ইনস্টল ফ্লো ( Package Installer অ্যাপ দ্বারা সঞ্চালিত) অনুমতি প্রদানের থেকে একটি পৃথক ফাংশন ( Permission Controller অ্যাপে)।

মাথাবিহীন অ্যাপ্লিকেশন

শুধুমাত্র কার্যকলাপ অনুমতি অনুরোধ করতে পারেন. পরিষেবাগুলি সরাসরি অনুমতির জন্য অনুরোধ করতে পারে না৷

  • অ্যান্ড্রয়েড 5.1 এবং তার আগের, হেডলেস অ্যাপ্লিকেশানগুলি ইনস্টল করার সময় অনুমতির জন্য অনুরোধ করতে পারে, বা যদি সেগুলি কোনও কার্যকলাপ ব্যবহার না করেই আগে থেকে ইনস্টল করা থাকে।
  • অ্যান্ড্রয়েড 6.0 এবং উচ্চতর সংস্করণে, হেডলেস অ্যাপ্লিকেশনগুলিকে অনুমতির অনুরোধ করতে নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করতে হবে:
    • অনুমতির অনুরোধ করতে একটি কার্যকলাপ যোগ করুন। (এই পছন্দের পদ্ধতি.)
    • প্রয়োজনীয় অনুমতি আছে এমন অন্য অ্যাপ্লিকেশনের সাথে একটি UID শেয়ার করুন। একটি একক অ্যাপ্লিকেশন হিসাবে একাধিক APK পরিচালনা করার জন্য আপনার প্ল্যাটফর্মের প্রয়োজন হলেই এই পদ্ধতিটি ব্যবহার করুন৷

লক্ষ্য হল অনুমতির অনুরোধের সাথে ব্যবহারকারীদের বিভ্রান্ত করা এড়ানো যা প্রসঙ্গের বাইরে প্রদর্শিত হয়।

PackageInstaller UI কাস্টমাইজ করা হচ্ছে

যদি ইচ্ছা হয়, আপনি প্যাকেজইনস্টলার দ্বারা ব্যবহৃত ডিফল্ট ডিভাইস থিমগুলি ( Theme.DeviceDefault.Settings এবং Theme.DeviceDefault.Light.Dialog.NoActionBar ) আপডেট করে অনুমতি UI থিম কাস্টমাইজ করতে পারেন৷ যাইহোক, যেহেতু অ্যাপ ডেভেলপারদের জন্য ধারাবাহিকতা অত্যন্ত গুরুত্বপূর্ণ, আপনি অনুমতি UI কখন প্রদর্শিত হবে তার স্থান নির্ধারণ, অবস্থান এবং নিয়ম কাস্টমাইজ করতে পারবেন না।

অতিরিক্ত ভাষার জন্য স্ট্রিংগুলি অন্তর্ভুক্ত করতে, AOSP-এ স্ট্রিংগুলিকে অবদান রাখুন।

ব্যতিক্রম তৈরি করা

আপনি প্যাকেজম্যানেজারে DefaultPermissionGrantPolicy.java ক্লাস ব্যবহার করে মূল OS কার্যকারিতার জন্য ডিফল্ট হ্যান্ডলার বা প্রদানকারী অ্যাপ্লিকেশনগুলিতে প্রাক-অনুমতি দিতে পারেন। উদাহরণ:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

কাস্টম অনুমতি সংজ্ঞায়িত করা

আপনি কাস্টম অনুমতি এবং গোষ্ঠীগুলিকে স্বাভাবিক বা বিপজ্জনক হিসাবে সংজ্ঞায়িত করতে পারেন এবং বিদ্যমান অনুমতি গোষ্ঠীগুলিতে OEM/ক্যারিয়ার-নির্দিষ্ট অনুমতি যোগ করতে পারেন, ঠিক যেমন আপনি Android 5.x এবং পূর্ববর্তী প্রকাশগুলিতে করতে পারেন৷

অ্যান্ড্রয়েড 6.0 এবং পরবর্তীতে, আপনি যদি একটি নতুন বিপজ্জনক অনুমতি যোগ করেন তবে এটি অবশ্যই অন্যান্য বিপজ্জনক অনুমতিগুলির মতোই পরিচালনা করতে হবে (অ্যাপ রানটাইমের সময় অনুরোধ করা হয়েছিল এবং ব্যবহারকারীদের দ্বারা প্রত্যাহারযোগ্য)৷ বিশেষভাবে:

  • আপনি একটি বর্তমান গ্রুপে নতুন অনুমতি যোগ করতে পারেন, কিন্তু আপনি বিপজ্জনক অনুমতি এবং বিপজ্জনক অনুমতি গোষ্ঠীর AOSP ম্যাপিং পরিবর্তন করতে পারবেন না। (অন্য কথায়, আপনি একটি গ্রুপ থেকে একটি অনুমতি সরাতে এবং অন্য গ্রুপে বরাদ্দ করতে পারবেন না)।
  • আপনি ডিভাইসে ইনস্টল করা অ্যাপ্লিকেশনগুলিতে নতুন অনুমতি গোষ্ঠী যুক্ত করতে পারেন, তবে আপনি প্ল্যাটফর্ম ম্যানিফেস্টে নতুন অনুমতি গোষ্ঠী যুক্ত করতে পারবেন না।

পরীক্ষার অনুমতি

অ্যান্ড্রয়েডে সামঞ্জস্য পরীক্ষা স্যুট (সিটিএস) পরীক্ষা রয়েছে যা যাচাই করে যে পৃথক অনুমতিগুলি সঠিক গোষ্ঠীতে ম্যাপ করা হয়েছে। এই পরীক্ষাগুলি পাস করা Android 6.0 এবং পরবর্তী CTS সামঞ্জস্যের জন্য প্রয়োজনীয়।