পূর্ববর্তী রিলিজগুলোর মতোই, অ্যান্ড্রয়েড ১৩-এ এমন কিছু আচরণগত পরিবর্তন রয়েছে যা আপনার অ্যাপকে প্রভাবিত করতে পারে। নিম্নলিখিত আচরণগত পরিবর্তনগুলো শুধুমাত্র সেইসব অ্যাপের জন্য প্রযোজ্য যেগুলো অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করে তৈরি। যদি আপনার অ্যাপটি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করে তৈরি হয়, তবে প্রযোজ্য ক্ষেত্রে এই আচরণগুলোকে সঠিকভাবে সমর্থন করার জন্য আপনার অ্যাপটি পরিবর্তন করা উচিত।
অ্যান্ড্রয়েড ১৩-এ চালিত সমস্ত অ্যাপকে প্রভাবিত করে এমন আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করতে ভুলবেন না।
গোপনীয়তা
নোটিফিকেশন অনুমতি ফোরগ্রাউন্ড সার্ভিসের চেহারাকে প্রভাবিত করে।
যদি ব্যবহারকারী নোটিফিকেশন পারমিশন অস্বীকার করেন, তাহলে তিনি নোটিফিকেশন ড্রয়ারে ফোরগ্রাউন্ড সার্ভিস সম্পর্কিত নোটিশ দেখতে পান না। তবে, নোটিফিকেশন পারমিশন দেওয়া হোক বা না হোক, ব্যবহারকারীরা টাস্ক ম্যানেজারে ফোরগ্রাউন্ড সার্ভিস সম্পর্কিত নোটিশ ঠিকই দেখতে পান।
কাছাকাছি ওয়াই-ফাই ডিভাইসগুলির জন্য নতুন রানটাইম অনুমতি
অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, বেশ কিছু সাধারণ ওয়াই-ফাই ব্যবহারের কাজ সম্পন্ন করার জন্য ব্যবহারকারীকে আপনার অ্যাপকে ACCESS_FINE_LOCATION পারমিশনটি দিতে হতো।
যেহেতু ব্যবহারকারীদের জন্য ওয়াই-ফাই কার্যকারিতার সাথে লোকেশন পারমিশন যুক্ত করা কঠিন, তাই অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) NEARBY_DEVICES পারমিশন গ্রুপে এমন অ্যাপগুলির জন্য একটি রানটাইম পারমিশন চালু করেছে, যেগুলো ওয়াই-ফাই এর মাধ্যমে কাছাকাছি অ্যাক্সেস পয়েন্টগুলির সাথে ডিভাইসের সংযোগ পরিচালনা করে। এই পারমিশন, NEARBY_WIFI_DEVICES , নিম্নলিখিত ওয়াই-ফাই ব্যবহারের ক্ষেত্রগুলি পূরণ করে:
- কাছাকাছি থাকা ডিভাইস, যেমন প্রিন্টার বা মিডিয়া কাস্টিং ডিভাইস খুঁজুন বা সেগুলোর সাথে সংযোগ স্থাপন করুন। এই কার্যপ্রবাহ আপনার অ্যাপকে নিম্নলিখিত ধরণের কাজগুলো সম্পন্ন করতে সাহায্য করে:
- আউট অফ ব্যান্ডে, যেমন BLE-এর মাধ্যমে, AP তথ্য গ্রহণ করুন।
- Wi-Fi Aware-এর মাধ্যমে ডিভাইসগুলি খুঁজুন ও সেগুলির সাথে সংযুক্ত হন এবং শুধুমাত্র স্থানীয় হটস্পট ব্যবহার করে সংযোগ করুন।
- Wi-Fi Direct-এর মাধ্যমে ডিভাইসগুলি খুঁজুন এবং সেগুলির সাথে সংযুক্ত হন।
- গাড়ি বা স্মার্ট হোম ডিভাইসের মতো কোনো পরিচিত SSID-এর সাথে সংযোগ স্থাপন করুন।
- শুধুমাত্র স্থানীয়দের জন্য একটি হটস্পট চালু করুন।
- কাছাকাছি থাকা ওয়াই-ফাই অ্যাওয়্যার ডিভাইসগুলোর রেঞ্জ।
যতক্ষণ আপনার অ্যাপ Wi-Fi API থেকে ভৌতিক অবস্থানের তথ্য সংগ্রহ না করে, ততক্ষণ Android 13 বা তার উচ্চতর সংস্করণ টার্গেট করার সময় এবং Wi-Fi API ব্যবহার করার ক্ষেত্রে ACCESS_FINE_LOCATION এর পরিবর্তে NEARBY_WIFI_DEVICES পারমিশনের জন্য অনুরোধ করুন। যখন আপনি NEARBY_WIFI_DEVICES পারমিশনটি ডিক্লেয়ার করবেন, তখন দৃঢ়ভাবে নিশ্চিত করুন যে আপনার অ্যাপ কখনোই Wi-Fi API থেকে ভৌতিক অবস্থানের তথ্য সংগ্রহ করবে না। এটি করার জন্য, android:usesPermissionFlags অ্যাট্রিবিউটটিকে neverForLocation এ সেট করুন। এই প্রক্রিয়াটি Android 12 (API লেভেল 31) এবং তার উচ্চতর সংস্করণে করা প্রক্রিয়ার মতোই, যেখানে আপনি নিশ্চিত করেন যে ব্লুটুথ ডিভাইসের তথ্য অবস্থানের জন্য কখনোই ব্যবহার করা হয় না ।
কাছাকাছি থাকা ওয়াই-ফাই ডিভাইসগুলো অ্যাক্সেস করার অনুমতি কীভাবে চাইতে হয় , সে সম্পর্কে আরও জানুন।
দানাদার মিডিয়া অনুমতি
READ_MEDIA_AUDIO অনুমতির জন্য অনুরোধ করলে ব্যবহারকারী যে সিস্টেম অনুমতি ডায়ালগটি দেখতে পান। আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করে এবং অন্য অ্যাপের তৈরি করা মিডিয়া ফাইল অ্যাক্সেস করার প্রয়োজন হয়, তাহলে আপনাকে READ_EXTERNAL_STORAGE পারমিশনের পরিবর্তে নিম্নলিখিত এক বা একাধিক সুনির্দিষ্ট মিডিয়া পারমিশনের জন্য অনুরোধ করতে হবে:
| মিডিয়ার ধরণ | অনুরোধ করার অনুমতি |
|---|---|
| ছবি এবং ফটো | READ_MEDIA_IMAGES |
| ভিডিও | READ_MEDIA_VIDEO |
| অডিও ফাইল | READ_MEDIA_AUDIO |
অন্য কোনো অ্যাপের মিডিয়া ফাইল অ্যাক্সেস করার আগে, যাচাই করে নিন যে ব্যবহারকারী আপনার অ্যাপকে যথাযথ ও সুনির্দিষ্ট মিডিয়া অনুমতি দিয়েছেন কিনা।
চিত্র ১-এ এমন একটি অ্যাপ দেখানো হয়েছে যা READ_MEDIA_AUDIO পারমিশনটির জন্য অনুরোধ করে।
আপনি যদি একই সাথে READ_MEDIA_IMAGES এবং READ_MEDIA_VIDEO উভয় পারমিশনের জন্য অনুরোধ করেন, তাহলে কেবল একটি সিস্টেম পারমিশন ডায়ালগ বক্স প্রদর্শিত হবে।
যদি আপনার অ্যাপকে পূর্বে READ_EXTERNAL_STORAGE পারমিশন দেওয়া হয়ে থাকে, তাহলে আপগ্রেড করার সময় অনুরোধ করা যেকোনো READ_MEDIA_* পারমিশন স্বয়ংক্রিয়ভাবে মঞ্জুর করা হয়। আপগ্রেড করা পারমিশনগুলো পর্যালোচনা করতে আপনি নিম্নলিখিত ADB কমান্ডটি ব্যবহার করতে পারেন:
adb shell cmd appops get --uid PACKAGE_NAME
ব্যাকগ্রাউন্ডে বডি সেন্সর ব্যবহার করার জন্য নতুন অনুমতির প্রয়োজন।
অ্যান্ড্রয়েড ১৩ হার্ট রেট, তাপমাত্রা এবং রক্তে অক্সিজেনের শতাংশের মতো বডি সেন্সরগুলির জন্য "ব্যবহার চলাকালীন" অ্যাক্সেসের ধারণা চালু করেছে। এই অ্যাক্সেস মডেলটি অ্যান্ড্রয়েড ১০-এ (এপিআই লেভেল ২৯) লোকেশনের জন্য সিস্টেম দ্বারা প্রবর্তিত মডেলের সাথে খুবই সাদৃশ্যপূর্ণ।
আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৩-কে টার্গেট করে এবং ব্যাকগ্রাউন্ডে চলার সময় বডি সেন্সরের তথ্যে অ্যাক্সেসের প্রয়োজন হয়, তাহলে বিদ্যমান BODY_SENSORS পারমিশনের পাশাপাশি আপনাকে অবশ্যই নতুন BODY_SENSORS_BACKGROUND পারমিশনটিও ডিক্লেয়ার করতে হবে।
কর্মক্ষমতা এবং ব্যাটারি
ব্যাটারি সম্পদ ব্যবহার
যদি আপনার অ্যাপটি অ্যান্ড্রয়েড ১৩-কে টার্গেট করে এবং ব্যবহারকারী ব্যাকগ্রাউন্ডে ব্যাটারি ব্যবহারের জন্য অ্যাপটিকে "restricted" অবস্থায় রাখে, তাহলে অ্যাপটি অন্য কোনো কারণে চালু না হওয়া পর্যন্ত সিস্টেম BOOT_COMPLETED বা LOCKED_BOOT_COMPLETED ব্রডকাস্ট পাঠায় না।
ব্যবহারকারীর অভিজ্ঞতা
PlaybackState থেকে প্রাপ্ত মিডিয়া নিয়ন্ত্রণ
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং তার পরবর্তী সংস্করণকে লক্ষ্য করে তৈরি অ্যাপগুলোর জন্য, সিস্টেম PlaybackState অ্যাকশন থেকে মিডিয়া কন্ট্রোলগুলো গ্রহণ করে। এর ফলে সিস্টেমটি আরও সমৃদ্ধ কন্ট্রোল সেট প্রদর্শন করতে পারে, যা ফোন এবং ট্যাবলেট ডিভাইসের মধ্যে প্রযুক্তিগতভাবে সামঞ্জস্যপূর্ণ এবং অ্যান্ড্রয়েড অটো ও অ্যান্ড্রয়েড টিভির মতো অন্যান্য অ্যান্ড্রয়েড প্ল্যাটফর্মে মিডিয়া কন্ট্রোলগুলো যেভাবে প্রদর্শিত হয়, তার সাথেও সঙ্গতিপূর্ণ।
চিত্র ২-এ যথাক্রমে একটি ফোন এবং ট্যাবলেট ডিভাইসে এটি দেখতে কেমন লাগে তার একটি উদাহরণ দেখানো হয়েছে।

অ্যান্ড্রয়েড ১৩-এর আগে, সিস্টেমটি MediaStyle নোটিফিকেশন থেকে সর্বোচ্চ পাঁচটি অ্যাকশন, সেগুলো যুক্ত হওয়ার ক্রমানুসারে প্রদর্শন করত। কম্প্যাক্ট মোডে—উদাহরণস্বরূপ, সংকুচিত কুইক সেটিংসে— setShowActionsInCompactView() দিয়ে নির্দিষ্ট করা সর্বোচ্চ তিনটি অ্যাকশন দেখানো হতো।
অ্যান্ড্রয়েড ১৩ থেকে শুরু করে, সিস্টেমটি নিম্নলিখিত সারণীতে বর্ণিত PlaybackState এর উপর ভিত্তি করে সর্বোচ্চ পাঁচটি অ্যাকশন বাটন প্রদর্শন করে। কম্প্যাক্ট মোডে, শুধুমাত্র প্রথম তিনটি অ্যাকশন স্লট প্রদর্শিত হবে। যে অ্যাপগুলো অ্যান্ড্রয়েড ১৩-কে টার্গেট করে না অথবা যেগুলোতে PlaybackState অন্তর্ভুক্ত নেই, সেগুলোর ক্ষেত্রে সিস্টেমটি পূর্ববর্তী অনুচ্ছেদে বর্ণিত MediaStyle নোটিফিকেশনে যুক্ত করা Action তালিকার উপর ভিত্তি করে কন্ট্রোলগুলো প্রদর্শন করবে।
| স্লট | পদক্ষেপ | মানদণ্ড |
|---|---|---|
| ১ | খেলা | PlaybackState এর বর্তমান অবস্থা নিম্নলিখিতগুলির মধ্যে একটি:
|
| লোডিং স্পিনার | PlaybackState এর বর্তমান অবস্থা নিম্নলিখিতগুলির মধ্যে একটি:
| |
| বিরতি | PlaybackState এর বর্তমান অবস্থা উপরের কোনোটিই নয়। | |
| ২ | পূর্ববর্তী | PlaybackState অ্যাকশনগুলোর মধ্যে ACTION_SKIP_TO_PREVIOUS অন্তর্ভুক্ত। |
| কাস্টম | PlaybackState অ্যাকশনগুলোর মধ্যে ACTION_SKIP_TO_PREVIOUS অন্তর্ভুক্ত নয় এবং PlaybackState কাস্টম অ্যাকশনগুলোর মধ্যে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত রয়েছে যা এখনও স্থাপন করা হয়নি। | |
| খালি | PlaybackState এক্সট্রাগুলোর মধ্যে SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV কী-টির জন্য একটি true বুলিয়ান মান অন্তর্ভুক্ত রয়েছে। | |
| ৩ | পরবর্তী | PlaybackState অ্যাকশনগুলোর মধ্যে ACTION_SKIP_TO_NEXT অন্তর্ভুক্ত। |
| কাস্টম | PlaybackState অ্যাকশনগুলোর মধ্যে ACTION_SKIP_TO_NEXT অন্তর্ভুক্ত নয় এবং PlaybackState কাস্টম অ্যাকশনগুলোর মধ্যে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত রয়েছে যা এখনও স্থাপন করা হয়নি। | |
| খালি | PlaybackState এক্সট্রাগুলোর মধ্যে SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT কী-টির জন্য একটি true বুলিয়ান মান অন্তর্ভুক্ত রয়েছে। | |
| ৪ | কাস্টম | PlaybackState কাস্টম অ্যাকশনগুলোর মধ্যে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত রয়েছে যা এখনও স্থাপন করা হয়নি। |
| ৫ | কাস্টম | PlaybackState কাস্টম অ্যাকশনগুলোর মধ্যে এমন একটি কাস্টম অ্যাকশন অন্তর্ভুক্ত রয়েছে যা এখনও স্থাপন করা হয়নি। |
কাস্টম অ্যাকশনগুলো PlaybackState এ যে ক্রমে যোগ করা হয়েছিল, সেই ক্রমেই স্থাপন করা হয়।
অ্যাপের কালার থিম ওয়েবভিউ কন্টেন্টে স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়েছে।
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) বা তার উচ্চতর সংস্করণের জন্য তৈরি অ্যাপগুলোর ক্ষেত্রে setForceDark() মেথডটি অপ্রচলিত (deprecated) ঘোষণা করা হয়েছে, ফলে এই মেথডটি কল করা হলে কোনো কাজ হয় না।
এর পরিবর্তে, WebView এখন সর্বদা অ্যাপের থিম অ্যাট্রিবিউট ‘ isLightTheme ’ অনুযায়ী মিডিয়া কোয়েরির prefers-color-scheme সেট করে। অন্য কথায়, যদি isLightTheme true হয় বা নির্দিষ্ট করা না থাকে, তাহলে prefers-color-scheme হয় light ; অন্যথায়, এটি dark হয়। এই আচরণের অর্থ হলো, যদি ওয়েব কন্টেন্টটি সমর্থন করে, তবে অ্যাপের থিমের সাথে মেলানোর জন্য এর ‘light’ বা ‘dark’ স্টাইল স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়।
বেশিরভাগ অ্যাপের ক্ষেত্রে, নতুন এই আচরণটি স্বয়ংক্রিয়ভাবে উপযুক্ত অ্যাপ স্টাইলগুলো প্রয়োগ করবে, তবে আপনার অ্যাপটি পরীক্ষা করে দেখা উচিত যে এমন কোনো পরিস্থিতি আছে কিনা যেখানে আপনি ম্যানুয়ালি ডার্ক মোড সেটিংস নিয়ন্ত্রণ করছিলেন।
আপনার অ্যাপের কালার থিমের আচরণ যদি এখনও কাস্টমাইজ করার প্রয়োজন হয়, তাহলে এর পরিবর্তে setAlgorithmicDarkeningAllowed() মেথডটি ব্যবহার করুন। পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলির সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য, আমরা AndroidX-এ এর সমতুল্য setAlgorithmicDarkeningAllowed() মেথডটি ব্যবহার করার পরামর্শ দিই।
আপনার অ্যাপের targetSdkVersion এবং থিম সেটিংসের উপর নির্ভর করে আপনার অ্যাপে কী ধরনের আচরণ আশা করা যায়, সে সম্পর্কে আরও জানতে ওই মেথডটির ডকুমেন্টেশন দেখুন।
সংযোগ
BluetoothAdapter#enable() এবং BluetoothAdapter#disable() অপ্রচলিত
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) বা তার উচ্চতর সংস্করণের জন্য তৈরি অ্যাপগুলোর ক্ষেত্রে, BluetoothAdapter#enable() এবং BluetoothAdapter#disable() মেথডগুলো অপ্রচলিত এবং সর্বদা false রিটার্ন করে।
নিম্নলিখিত ধরনের অ্যাপগুলো এই পরিবর্তনগুলোর আওতামুক্ত:
- ডিভাইস মালিকের অ্যাপগুলি
- প্রোফাইল মালিকের অ্যাপস
- সিস্টেম অ্যাপস
গুগল প্লে পরিষেবা
আইডি বিজ্ঞাপনের জন্য অনুমতি প্রয়োজন।
যেসব অ্যাপ গুগল প্লে সার্ভিসেস অ্যাডভার্টাইজিং আইডি ব্যবহার করে এবং অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) ও তার উচ্চতর সংস্করণকে টার্গেট করে, সেগুলোকে অবশ্যই তাদের অ্যাপের ম্যানিফেস্ট ফাইলে AD_ID নরমাল পারমিশনটি নিম্নোক্তভাবে ডিক্লেয়ার করতে হবে:
<manifest ...>
<!-- Required only if your app targets Android 13 or higher. -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application ...>
...
</application>
</manifest>
আপনার অ্যাপ যদি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করার সময় এই অনুমতিটি ঘোষণা না করে, তাহলে বিজ্ঞাপনী আইডিটি স্বয়ংক্রিয়ভাবে মুছে যায় এবং তার জায়গায় শূন্যের একটি স্ট্রিং বসে যায়।
যদি আপনার অ্যাপ এমন SDK ব্যবহার করে যা লাইব্রেরির ম্যানিফেস্টে AD_ID পারমিশন ঘোষণা করে, তাহলে পারমিশনটি ডিফল্টরূপে আপনার অ্যাপের ম্যানিফেস্ট ফাইলের সাথে মার্জ হয়ে যায়। এই ক্ষেত্রে, আপনার অ্যাপের ম্যানিফেস্ট ফাইলে পারমিশনটি ঘোষণা করার প্রয়োজন নেই।
আরও জানতে, প্লে কনসোল হেল্প-এ অ্যাডভারটাইজিং আইডি দেখুন।
আপডেট করা নন-এসডিকে বিধিনিষেধ
অ্যান্ড্রয়েড ডেভেলপারদের সাথে সহযোগিতা এবং সর্বশেষ অভ্যন্তরীণ পরীক্ষার উপর ভিত্তি করে অ্যান্ড্রয়েড ১৩-এ সীমাবদ্ধ নন-এসডিকে ইন্টারফেসের হালনাগাদ তালিকা অন্তর্ভুক্ত করা হয়েছে। যখনই সম্ভব, আমরা নন-এসডিকে ইন্টারফেস সীমাবদ্ধ করার আগে নিশ্চিত করি যে সেগুলোর পাবলিক বিকল্প উপলব্ধ আছে।
আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৩-কে টার্গেট না করে, তবে এই পরিবর্তনগুলোর কিছু হয়তো আপনাকে তাৎক্ষণিকভাবে প্রভাবিত করবে না। তবে, যদিও আপনি বর্তমানে কিছু নন-এসডিকে ইন্টারফেস ব্যবহার করতে পারবেন ( যা আপনার অ্যাপের টার্গেট এপিআই লেভেলের উপর নির্ভর করে ), যেকোনো নন-এসডিকে মেথড বা ফিল্ড ব্যবহার করলে আপনার অ্যাপটি ভেঙে যাওয়ার উচ্চ ঝুঁকি সবসময়ই থাকে।
আপনার অ্যাপ নন-এসডিকে ইন্টারফেস ব্যবহার করে কিনা, সে বিষয়ে আপনি অনিশ্চিত থাকলে, তা জানার জন্য আপনার অ্যাপটি পরীক্ষা করে দেখতে পারেন। যদি আপনার অ্যাপ নন-এসডিকে ইন্টারফেসের উপর নির্ভরশীল হয়, তবে আপনার এসডিকে বিকল্পগুলিতে স্থানান্তরের পরিকল্পনা শুরু করা উচিত। তা সত্ত্বেও, আমরা বুঝি যে কিছু অ্যাপের ক্ষেত্রে নন-এসডিকে ইন্টারফেস ব্যবহারের যৌক্তিক কারণ থাকে। যদি আপনি আপনার অ্যাপের কোনো ফিচারের জন্য নন-এসডিকে ইন্টারফেস ব্যবহারের কোনো বিকল্প খুঁজে না পান, তবে আপনার একটি নতুন পাবলিক এপিআই-এর জন্য অনুরোধ করা উচিত।
অ্যান্ড্রয়েডের এই সংস্করণের পরিবর্তনগুলো সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড ১৩-এ নন-এসডিকে ইন্টারফেস সীমাবদ্ধতার আপডেট দেখুন। সাধারণভাবে নন-এসডিকে ইন্টারফেস সম্পর্কে আরও জানতে, নন-এসডিকে ইন্টারফেসের উপর সীমাবদ্ধতা দেখুন।