Android 11-এ স্টোরেজ আপডেট

অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) প্ল্যাটফর্মটিকে আরও উন্নত করে, যা বহিরাগত স্টোরেজে অ্যাপ এবং ব্যবহারকারীর ডেটার জন্য আরও ভাল সুরক্ষা প্রদান করে। এই রিলিজে বেশ কিছু উন্নতির প্রবর্তন করা হয়েছে, যেমন কাঁচা ফাইল পাথ অ্যাক্সেস, মিডিয়ার জন্য ব্যাচ সম্পাদনা অপারেশন এবং স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্কের জন্য একটি আপডেটেড UI।

রিলিজটি স্কোপড স্টোরেজের উন্নতিও অফার করে, যা ডেভেলপারদের এই স্টোরেজ মডেল ব্যবহারে মাইগ্রেট করার পরে তাদের স্টোরেজ ব্যবহারের ক্ষেত্রে পূরণ করা সহজ করে তোলে।

স্কোপড স্টোরেজ এনফোর্সমেন্ট

যেসব অ্যাপ Android 11-এ চলে কিন্তু Android 10 (API লেভেল 29) টার্গেট করে, তারা এখনও requestLegacyExternalStorage অ্যাট্রিবিউটের জন্য অনুরোধ করতে পারে। এই ফ্ল্যাগ অ্যাপগুলিকে বিভিন্ন ডিরেক্টরি এবং বিভিন্ন ধরণের মিডিয়া ফাইলে অ্যাক্সেস দেওয়ার মতো স্কোপড স্টোরেজের সাথে সম্পর্কিত পরিবর্তনগুলি থেকে অস্থায়ীভাবে অপ্ট আউট করার অনুমতি দেয়। Android 11-কে টার্গেট করার জন্য আপনার অ্যাপ আপডেট করার পরে, সিস্টেম requestLegacyExternalStorage ফ্ল্যাগটিকে উপেক্ষা করে।

অ্যান্ড্রয়েড ১০ এর সাথে সামঞ্জস্য বজায় রাখুন

যদি আপনার অ্যাপটি Android 10 ডিভাইসে চলার সময় স্কোপড স্টোরেজ বন্ধ করে দেয়, তাহলে আপনার অ্যাপের ম্যানিফেস্ট ফাইলে requestLegacyExternalStorage true তে সেট করা চালিয়ে যাওয়ার পরামর্শ দেওয়া হচ্ছে। এইভাবে, আপনার অ্যাপটি Android 10 চালিত ডিভাইসগুলিতে প্রত্যাশা অনুযায়ী আচরণ করতে পারে।

স্কোপড স্টোরেজ ব্যবহার করার সময় দৃশ্যমান ডিরেক্টরিতে ডেটা স্থানান্তর করুন

যদি আপনার অ্যাপটি লিগ্যাসি স্টোরেজ মডেল ব্যবহার করে এবং পূর্বে Android 10 বা তার নিচের ভার্সন ব্যবহার করে, তাহলে আপনি এমন একটি ডিরেক্টরিতে ডেটা সংরক্ষণ করছেন যা স্কোপড স্টোরেজ মডেল সক্ষম থাকাকালীন আপনার অ্যাপ অ্যাক্সেস করতে পারবে না। Android 11 টার্গেট করার আগে, স্কোপড স্টোরেজের সাথে সামঞ্জস্যপূর্ণ এমন একটি ডিরেক্টরিতে ডেটা স্থানান্তর করুন

স্কোপড স্টোরেজ পরীক্ষা করুন

আপনার অ্যাপের টার্গেট SDK ভার্সন এবং ম্যানিফেস্ট ফ্ল্যাগ মান নির্বিশেষে, আপনার অ্যাপে স্কোপড স্টোরেজ সক্ষম করতে, নিম্নলিখিত অ্যাপ সামঞ্জস্যতা ফ্ল্যাগগুলি সক্ষম করুন:

স্কোপড স্টোরেজ অক্ষম করতে এবং এর পরিবর্তে লিগ্যাসি স্টোরেজ মডেল ব্যবহার করতে, উভয় ফ্ল্যাগ আনসেট করুন

ডিভাইস স্টোরেজ পরিচালনা করুন

অ্যান্ড্রয়েড ১১ থেকে শুরু করে, স্কোপড স্টোরেজ মডেল ব্যবহার করে এমন অ্যাপগুলি কেবল তাদের নিজস্ব অ্যাপ-নির্দিষ্ট ক্যাশে ফাইল অ্যাক্সেস করতে পারে। যদি আপনার অ্যাপটিকে ডিভাইস স্টোরেজ পরিচালনা করতে হয়, তাহলে কীভাবে খালি স্থান অনুসন্ধান করবেন তার নির্দেশাবলী অনুসরণ করুন।

  1. ACTION_MANAGE_STORAGE ইন্টেন্ট অ্যাকশনটি ব্যবহার করে খালি স্থান পরীক্ষা করুন।
  2. যদি ডিভাইসে পর্যাপ্ত খালি জায়গা না থাকে, তাহলে ব্যবহারকারীকে আপনার অ্যাপের সমস্ত ক্যাশে সাফ করার সম্মতি দিতে বলুন। এটি করার জন্য, ACTION_CLEAR_APP_CACHE ইন্টেন্ট অ্যাকশনটি ব্যবহার করুন।

বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডিরেক্টরি

অ্যান্ড্রয়েড ১১ থেকে শুরু করে, অ্যাপগুলি বাহ্যিক স্টোরেজে তাদের নিজস্ব অ্যাপ-নির্দিষ্ট ডিরেক্টরি তৈরি করতে পারে না। সিস্টেম আপনার অ্যাপের জন্য যে ডিরেক্টরিটি সরবরাহ করে তা অ্যাক্সেস করতে, getExternalFilesDirs() কল করুন।

মিডিয়া ফাইল অ্যাক্সেস

ব্যবহারকারীর গোপনীয়তা বজায় রেখে মিডিয়া অ্যাক্সেস করা সহজ করার জন্য, অ্যান্ড্রয়েড ১১ নিম্নলিখিত ক্ষমতাগুলি যুক্ত করে।

ব্যাচ অপারেশন সম্পাদন করুন

ডিভাইস জুড়ে ধারাবাহিকতা এবং ব্যবহারকারীর অতিরিক্ত সুবিধার জন্য, অ্যান্ড্রয়েড ১১ বেশ কয়েকটি পদ্ধতি যুক্ত করেছে যা মিডিয়া ফাইলগুলির গ্রুপ পরিচালনা করা সহজ করে তোলে।

সরাসরি ফাইল পাথ এবং নেটিভ লাইব্রেরি ব্যবহার করে ফাইল অ্যাক্সেস করুন

আপনার অ্যাপটিকে থার্ড-পার্টি মিডিয়া লাইব্রেরিগুলির সাথে আরও সুচারুভাবে কাজ করতে সাহায্য করার জন্য, Android 11 আপনাকে MediaStore API ছাড়া অন্য API ব্যবহার করে শেয়ার্ড স্টোরেজ থেকে সরাসরি ফাইল পাথ ব্যবহার করে মিডিয়া ফাইল অ্যাক্সেস করার অনুমতি দেয়। এই API গুলিতে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • File API।
  • নেটিভ লাইব্রেরি, যেমন fopen()

অন্যান্য অ্যাপ থেকে ডেটা অ্যাক্সেস করুন

ব্যবহারকারীর গোপনীয়তা রক্ষা করার জন্য, Android 11 বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলিতে, সিস্টেমটি আপনার অ্যাপের অন্যান্য অ্যাপের ব্যক্তিগত ডিরেক্টরিতে অ্যাক্সেসকে আরও সীমাবদ্ধ করে।

অভ্যন্তরীণ সঞ্চয়স্থানে ডেটা ডিরেক্টরিগুলিতে অ্যাক্সেস

অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) তাদের অভ্যন্তরীণ স্টোরেজের ডেটা ডিরেক্টরিতে থাকা ফাইলগুলিকে অন্য অ্যাপের জন্য বিশ্বব্যাপী অ্যাক্সেসযোগ্য করে তুলতে পারে এমন অ্যাপগুলিকে সীমাবদ্ধ করতে শুরু করেছে। অ্যান্ড্রয়েড ৯ বা তার উচ্চতর সংস্করণগুলিকে লক্ষ্য করে এমন অ্যাপগুলি তাদের ডেটা ডিরেক্টরিতে থাকা ফাইলগুলিকে বিশ্বব্যাপী অ্যাক্সেসযোগ্য করে তুলতে পারে না

অ্যান্ড্রয়েড ১১ এই বিধিনিষেধের পরিধি বাড়ায়। যদি আপনার অ্যাপটি অ্যান্ড্রয়েড ১১-কে টার্গেট করে, তাহলে এটি অন্য কোনও অ্যাপের ডেটা ডিরেক্টরিতে থাকা ফাইলগুলিতে অ্যাক্সেস করতে পারবে না, এমনকি যদি অন্য অ্যাপটি অ্যান্ড্রয়েড ৮.১ (এপিআই লেভেল ২৭) বা তার নিচের ভার্সনগুলিকে টার্গেট করে এবং তার ডেটা ডিরেক্টরিতে থাকা ফাইলগুলিকে বিশ্ব-পঠনযোগ্য করে তোলে।

বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডিরেক্টরিগুলিতে অ্যাক্সেস

অ্যান্ড্রয়েড ১১-এ, অ্যাপগুলি আর অন্য কোনও অ্যাপের ডেডিকেটেড, অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে থাকা ফাইলগুলি বাহ্যিক স্টোরেজের মধ্যে অ্যাক্সেস করতে পারবে না।

ডকুমেন্ট অ্যাক্সেসের সীমাবদ্ধতা

ডেভেলপারদের পরীক্ষার জন্য সময় দেওয়ার জন্য, স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক (SAF) সম্পর্কিত নিম্নলিখিত পরিবর্তনগুলি কেবলমাত্র তখনই কার্যকর হবে যদি আপনার অ্যাপটি Android 11 বা তার উচ্চতর সংস্করণগুলিকে লক্ষ্য করে।

ডিরেক্টরিগুলিতে অ্যাক্সেস

নিম্নলিখিত ডিরেক্টরিগুলিতে অ্যাক্সেসের অনুরোধ করার জন্য আপনি আর ACTION_OPEN_DOCUMENT_TREE ইন্টেন্ট অ্যাকশন ব্যবহার করতে পারবেন না:

  • অভ্যন্তরীণ স্টোরেজ ভলিউমের রুট ডিরেক্টরি।
  • প্রতিটি SD কার্ড ভলিউমের রুট ডিরেক্টরি যা ডিভাইস প্রস্তুতকারক নির্ভরযোগ্য বলে মনে করে, কার্ডটি অনুকরণ করা হোক বা অপসারণযোগ্য হোক না কেন। একটি নির্ভরযোগ্য ভলিউম হল এমন একটি ভলিউম যা একটি অ্যাপ বেশিরভাগ সময় সফলভাবে অ্যাক্সেস করতে পারে।
  • Download ডিরেক্টরি।

ফাইল অ্যাক্সেস

নিম্নলিখিত ডিরেক্টরিগুলি থেকে ব্যবহারকারীকে পৃথক ফাইল নির্বাচন করার অনুরোধ করার জন্য আপনি আর ACTION_OPEN_DOCUMENT_TREE বা ACTION_OPEN_DOCUMENT ইন্টেন্ট অ্যাকশন ব্যবহার করতে পারবেন না:

  • Android/data/ ডিরেক্টরি এবং সমস্ত সাবডিরেক্টরি।
  • Android/obb/ ডিরেক্টরি এবং সমস্ত সাবডিরেক্টরি।

পরিবর্তনটি পরীক্ষা করুন

এই আচরণগত পরিবর্তন পরীক্ষা করার জন্য, নিম্নলিখিতগুলি করুন:

  1. ACTION_OPEN_DOCUMENT অ্যাকশনের মাধ্যমে একটি ইনটেন্ট ইনভাইট করুন। Android/data/ এবং Android/obb/ ডিরেক্টরি দুটি দেখা যাচ্ছে না কিনা তা পরীক্ষা করুন।
  2. নিম্নলিখিতগুলির মধ্যে একটি করুন:
    • RESTRICT_STORAGE_ACCESS_FRAMEWORK অ্যাপ সামঞ্জস্যতা পতাকা সক্ষম করুন।
    • Android 11 বা তার উচ্চতর ভার্সনকে টার্গেট করুন।
  3. ACTION_OPEN_DOCUMENT_TREE অ্যাকশনের মাধ্যমে একটি ইনটেন্ট ইনভয় করুন। চেক করুন যে Download ডিরেক্টরিটি দেখা যাচ্ছে এবং ডিরেক্টরির সাথে সম্পর্কিত অ্যাকশন বোতামটি ধূসর রঙে দেখা যাচ্ছে।

অনুমতিসমূহ

অ্যান্ড্রয়েড ১১ স্টোরেজ অনুমতি সম্পর্কিত নিম্নলিখিত পরিবর্তনগুলি প্রবর্তন করে।

যেকোনো সংস্করণ লক্ষ্য করুন

প্রথম ডায়ালগে সেটিংসে "Allow" নামে একটি লিঙ্ক দেখানো হয়েছে।
চিত্র ১. যখন কোনও অ্যাপ স্কোপড স্টোরেজ ব্যবহার করে এবং READ_EXTERNAL_STORAGE অনুমতির অনুরোধ করে তখন ডায়ালগটি দেখানো হয়েছে।

আপনার অ্যাপের টার্গেট SDK ভার্সন যাই হোক না কেন, নিম্নলিখিত পরিবর্তনগুলি Android 11-এ কার্যকর হবে:

  • স্টোরেজ রানটাইম অনুমতিটির নাম পরিবর্তন করে Files & Media রাখা হয়েছে।
  • যদি আপনার অ্যাপটি স্কোপড স্টোরেজ থেকে বেরিয়ে না আসে এবং READ_EXTERNAL_STORAGE অনুমতির অনুরোধ করে, তাহলে ব্যবহারকারীরা Android 10 এর তুলনায় একটি ভিন্ন ডায়ালগ দেখতে পাবেন। ডায়ালগটি নির্দেশ করে যে আপনার অ্যাপটি ছবি এবং মিডিয়া অ্যাক্সেসের জন্য অনুরোধ করছে, যেমন চিত্র 1-এ দেখানো হয়েছে।

    ব্যবহারকারীরা সিস্টেম সেটিংসে কোন অ্যাপগুলির READ_EXTERNAL_STORAGE অনুমতি আছে তা দেখতে পারবেন। সেটিংস > গোপনীয়তা > অনুমতি ব্যবস্থাপক > ফাইল এবং মিডিয়া পৃষ্ঠায়, অনুমতি আছে এমন প্রতিটি অ্যাপ " সকল ফাইলের জন্য অনুমোদিত " এর অধীনে তালিকাভুক্ত করা হয়েছে। যদি আপনার অ্যাপটি Android 11-কে লক্ষ্য করে থাকে, তাহলে মনে রাখবেন যে "সকল ফাইল"-এ এই অ্যাক্সেস কেবল পঠনযোগ্য। এই অ্যাপটি ব্যবহার করে শেয়ার্ড স্টোরেজে থাকা সমস্ত ফাইল পড়তে এবং লিখতে , আপনার সমস্ত ফাইল অ্যাক্সেসের অনুমতি থাকা প্রয়োজন।

টার্গেট অ্যান্ড্রয়েড ১১

যদি আপনার অ্যাপটি Android 11-কে টার্গেট করে, তাহলে WRITE_EXTERNAL_STORAGE অনুমতি এবং WRITE_MEDIA_STORAGE বিশেষাধিকারপ্রাপ্ত অনুমতি উভয়ই আর কোনও অতিরিক্ত অ্যাক্সেস প্রদান করবে না।

মনে রাখবেন যে, Android 10 (API লেভেল 29) বা তার বেশি চলমান ডিভাইসগুলিতে, আপনার অ্যাপটি কোনও স্টোরেজ-সম্পর্কিত অনুমতির অনুরোধ ছাড়াই MediaStore.Downloads এর মতো সু-সংজ্ঞায়িত মিডিয়া সংগ্রহে অবদান রাখতে পারে। আপনার অ্যাপে মিডিয়া ফাইলগুলির সাথে কাজ করার সময় কীভাবে কেবল প্রয়োজনীয় অনুমতিগুলির জন্য অনুরোধ করবেন সে সম্পর্কে আরও জানুন।

সকল ফাইল অ্যাক্সেস

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

অতিরিক্ত সম্পদ

অ্যান্ড্রয়েড ১১-এ স্টোরেজের পরিবর্তন সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত উপকরণগুলি দেখুন:

ব্লগ পোস্ট

ভিডিও