Android 11 ব্যবহারকারীদের লোকেশন, মাইক্রোফোন ও ক্যামেরার জন্য আরও নির্দিষ্ট অনুমতি দেওয়ার সুবিধা প্রদান করে। এছাড়াও, সিস্টেম Android 11 বা তার পরবর্তী ভার্সন টার্গেট করে এমন অব্যবহৃত অ্যাপের অনুমতি রিসেট করে এবং অ্যাপ যদি সিস্টেম অ্যালার্ট উইন্ডো ব্যবহার করে বা ফোন নম্বর সম্পর্কিত তথ্য পড়ে, তাহলে সেগুলি যে অনুমতি ঘোষণা করে তা আপডেট করার প্রয়োজন হতে পারে।
এককালীন অনুমতি
Android 11 থেকে শুরু করে, আপনার অ্যাপ যখনই লোকেশন, মাইক্রোফোন বা ক্যামেরা সম্পর্কিত কোনও অনুমতি চায়, ব্যবহারকারী নিজে ইন্টার্যাক্ট করতে পারেন এমন অনুমতি ডায়ালগে শুধুমাত্র এইবার নামে একটি বিকল্প থাকে। ব্যবহারকারী ডায়ালগে এই বিকল্প বেছে নিলে, আপনার অ্যাপকে সাময়িক এককালীন অনুমতি দেওয়া হয়।
সিস্টেম কীভাবে এককালীন অনুমতি ম্যানেজ করে সেই সম্পর্কে আরও জানুন।
অব্যবহৃত অ্যাপ থেকে অনুমতি অটো-রিসেট করুন
আপনার অ্যাপ Android ১১ বা তার পরবর্তী ভার্সনকে টার্গেট করলে এবং কয়েক মাস ব্যবহার না করা হলে, ব্যবহারকারী আপনার অ্যাপকে যে সংবেদনশীল রানটাইম অনুমতি দিয়েছিলেন, সিস্টেম তা অটোমেটিক রিসেট করে ব্যবহারকারীর ডেটা সুরক্ষিত রাখে। ব্যবহারকারী সিস্টেম সেটিংসে গিয়ে অনুমতি দেখে আপনার অ্যাপের অ্যাক্সেস লেভেল প্রত্যাখ্যান করুন বিকল্পে পরিবর্তন করলে যে ফলাফল হয়, এক্ষেত্রেও তাই হয়। আপনার অ্যাপ যদি রানটাইমে অনুমতি চাওয়ার জন্য পেশাদার পদ্ধতি অনুসরণ করে, তাহলে আপনাকে অ্যাপে কোনও পরিবর্তন করতে হবে না। কারণ, ব্যবহারকারী আপনার অ্যাপের ফিচার ব্যবহার করার সময়, আপনাকে যাচাই করতে হবে যে ফিচারগুলির প্রয়োজনীয় অনুমতি আছে কিনা।
সিস্টেম কীভাবে অব্যবহৃত অ্যাপের অনুমতি অটোমেটিক রিসেট করে সেই সম্পর্কে আরও জানুন।
অনুমতি সংক্রান্ত ডায়ালগের দৃশ্যমানতা
Android 11 থেকে শুরু করে, কোনও ডিভাইসে আপনার অ্যাপ ইনস্টল করার পর থেকে ব্যবহারকারী যদি নির্দিষ্ট কোনও অনুমতির জন্য একাধিকবার প্রত্যাখ্যান করুন বিকল্পে ট্যাপ করেন, তাহলে আপনার অ্যাপ আবার সেই অনুমতির জন্য অনুরোধ করলে, ব্যবহারকারী সিস্টেম অনুমতির ডায়ালগ দেখতে পাবেন না। ব্যবহারকারীর অ্যাকশন থেকে বোঝা যায় যে "আর জিজ্ঞাসা করবেন না।" আগের ভার্সনে, আপনার অ্যাপ যখনই কোনও অনুমতির জন্য অনুরোধ করত, তখনই ব্যবহারকারীরা সিস্টেম অনুমতির ডায়ালগ দেখতে পেতেন, যদি না ব্যবহারকারী আগে "আবার জিজ্ঞাসা করবেন না" চেকবক্স বা বিকল্প বেছে নিয়ে থাকেন। Android 11-এ এই আচরণগত পরিবর্তন, ব্যবহারকারী যেসব অনুমতি দিতে অস্বীকার করেছেন, সেগুলির জন্য বারবার অনুরোধ করাকে নিরুৎসাহিত করে।
কোনও অ্যাপকে স্থায়ীভাবে অনুমতি দেওয়া হয়নি কিনা তা শনাক্ত করতে (ডিবাগিং ও টেস্টিংয়ের উদ্দেশ্যে), নিম্নলিখিত কমান্ড ব্যবহার করুন:
adb shell dumpsys package PACKAGE_NAME
যেখানে PACKAGE_NAME হল সেই প্যাকেজের নাম যা পরীক্ষা করতে হবে।
কমান্ডের আউটপুটে এমন বিভাগ থাকে যা দেখতে এইরকম হয়:
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
ব্যবহারকারী একবার অনুমতি বাতিল করলে, USER_SET সেটি ফ্ল্যাগ করে।
প্রত্যাখ্যান করুন বিকল্পে দুবার ক্লিক করে যেসব অনুমতি স্থায়ীভাবে প্রত্যাখ্যান করা হয়েছে,
সেগুলি USER_FIXED দ্বারা ফ্ল্যাগ করা হয়।
টেস্টিংয়ের সময় আপনি হয়ত এইসব ফ্ল্যাগ রিসেট করতে চাইবেন যাতে অনুরোধের ডায়ালগ না দেখানো হলে টেস্টাররা অবাক না হন। এটি করতে, এই কমান্ড ব্যবহার করুন:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME হল সেই অনুমতির নাম যা আপনি রিসেট করতে চান। Android অ্যাপকে দেওয়া অনুমতির সম্পূর্ণ তালিকা দেখতে, অনুমতি API রেফারেন্স পৃষ্ঠা দেখুন।
আপনার অ্যাপে কীভাবে অনুমতি প্রত্যাখ্যান ম্যানেজ করবেন সেই সম্পর্কে আরও জানুন।
সিস্টেম সংক্রান্ত সতর্কতার উইন্ডোতে পরিবর্তন
Android 11-এ অ্যাপকে কীভাবে
SYSTEM_ALERT_WINDOW
অনুমতি দেওয়া হয় সেই বিষয়ে বেশ কিছু পরিবর্তন করা হয়েছে। এই পরিবর্তনগুলি ব্যবহারকারীদের সুরক্ষিত রাখার উদ্দেশ্যে করা হয়েছে, যাতে অনুমতি
প্রদান আরও ইচ্ছাকৃত হয়।
অনুরোধ করা হলে কিছু অ্যাপকে অটোমেটিক SYSTEM_ALERT_WINDOW অনুমতি দেওয়া হয়
অনুরোধ করা হলে নির্দিষ্ট কিছু ধরনের অ্যাপকে অটোমেটিক SYSTEM_ALERT_WINDOW
অনুমতি দেওয়া হয়:
যেসব অ্যাপে
ROLE_CALL_SCREENINGআছে এবংSYSTEM_ALERT_WINDOW-এর জন্য অনুরোধ করে, সেগুলিকে অটোমেটিক অনুমতি দেওয়া হয়। অ্যাপটিROLE_CALL_SCREENINGহারালে, এটি অনুমতি হারায়।MediaProjection-এর মাধ্যমে স্ক্রিন ক্যাপচার করছে এবংSYSTEM_ALERT_WINDOW-এর জন্য অনুরোধ করছে এমন যেকোনও অ্যাপকে অটোমেটিক অনুমতি দেওয়া হয়, যদি না ব্যবহারকারী অ্যাপটিকে স্পষ্টভাবে অনুমতি দিতে অস্বীকার করেন। অ্যাপটি স্ক্রিন ক্যাপচার করা বন্ধ করলে, এটি অনুমতি হারায়। এই ব্যবহারের কেসটি মূলত গেম লাইভস্ট্রিমিং অ্যাপের জন্য তৈরি করা হয়েছে।
SYSTEM_ALERT_WINDOW অনুমতি পাওয়ার জন্য এইসব অ্যাপকে
ACTION_MANAGE_OVERLAY_PERMISSION
পাঠাতে হয় না; অ্যাপগুলি সরাসরি
SYSTEM_ALERT_WINDOW-এর জন্য অনুরোধ করতে পারে।
MANAGE_OVERLAY_PERMISSION ইনটেন্ট সবসময় ব্যবহারকারীকে সিস্টেমের অনুমতি সংক্রান্ত স্ক্রিনে নিয়ে যায়
Android 11 থেকে শুরু করে,
ACTION_MANAGE_OVERLAY_PERMISSION
ইনটেন্ট সবসময় ব্যবহারকারীকে টপ-লেভেল সেটিংস স্ক্রিনে নিয়ে যায়, যেখানে
ব্যবহারকারী অ্যাপের জন্য
SYSTEM_ALERT_WINDOW
অনুমতি দিতে বা তুলে নিতে পারেন। ইনটেন্টে থাকা যেকোনও package: ডেটা এড়িয়ে যাওয়া হয়।
Android-এর আগের ভার্সনে, ACTION_MANAGE_OVERLAY_PERMISSION ইনটেন্ট
একটি প্যাকেজ নির্দিষ্ট করতে পারে, যা ব্যবহারকারীকে অনুমতি ম্যানেজ করার জন্য
অ্যাপ-নির্দিষ্ট স্ক্রিনে নিয়ে যাবে। Android ১১-এ এই কার্যকারিতা কাজ করে না। পরিবর্তে, ব্যবহারকারীকে প্রথমে সেই অ্যাপটি বেছে নিতে হবে যেটিকে তিনি
অনুমতি দিতে বা অনুমতি প্রত্যাহার করতে চান। এই পরিবর্তনটি ব্যবহারকারীদের সুরক্ষিত করার উদ্দেশ্যে করা হয়েছে
যাতে অনুমতি প্রদান আরও ইচ্ছাকৃত হয়।
ফোন নম্বর
Android 11 ফোন নম্বর পড়ার সময় আপনার অ্যাপের ব্যবহার করা ফোন-সম্পর্কিত অনুমতি পরিবর্তন করে।
আপনার অ্যাপ Android ১১ বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে এবং নিম্নলিখিত তালিকায় দেখানো ফোন নম্বর API অ্যাক্সেস করতে চাইলে, আপনাকে অবশ্যই
READ_PHONE_STATE অনুমতির পরিবর্তে
READ_PHONE_NUMBERS
অনুমতির জন্য অনুরোধ করতে হবে।
getLine1Number()পদ্ধতিটিTelephonyManagerক্লাস এবংTelecomManagerক্লাস, দুটিতেই রয়েছে।getMsisdn()পদ্ধতিটিTelephonyManagerক্লাসে কাজ করে না।
আপনার অ্যাপ যদি আগের তালিকায় উল্লেখ করা পদ্ধতি ছাড়া অন্য কোনও পদ্ধতি কল করার জন্য READ_PHONE_STATE ঘোষণা করে, তাহলে আপনি সব Android ভার্সন জুড়ে READ_PHONE_STATE-এর জন্য অনুরোধ করা চালিয়ে যেতে পারবেন। তবে, আপনি যদি আগের তালিকায় উল্লেখ করা পদ্ধতির জন্য শুধুমাত্র READ_PHONE_STATE অনুমতি ব্যবহার করেন, তাহলে আপনার ম্যানিফেস্ট ফাইলটি নিম্নলিখিত উপায়ে আপডেট করুন:
READ_PHONE_STATE-এর ঘোষণা পরিবর্তন করুন যাতে আপনার অ্যাপ শুধুমাত্র Android 10 (API লেভেল 29) এবং তার আগের ভার্সনে অনুমতি ব্যবহার করে।READ_PHONE_NUMBERSঅনুমতি যোগ করুন।
নিম্নলিখিত ম্যানিফেস্ট ডিক্লারেশন স্নিপেট এই প্রসেসটি দেখায়:
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
অতিরিক্ত রিসোর্স
Android 11-এ অনুমতিতে করা পরিবর্তন সম্পর্কে আরও তথ্য পেতে, নিম্নলিখিত মেটেরিয়াল দেখুন:
ভিডিও
Android 11-এ গোপনীয়তা সংক্রান্ত লেটেস্ট পরিবর্তন সহ ডেভেলপ করা