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

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

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

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

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

Android 10 এর সাথে সামঞ্জস্য বজায় রাখুন

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

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

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

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

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

  • DEFAULT_SCOPED_STORAGE (ডিফল্টরূপে সমস্ত অ্যাপের জন্য সক্ষম)
  • FORCE_ENABLE_SCOPED_STORAGE (ডিফল্টরূপে সমস্ত অ্যাপের জন্য অক্ষম)

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

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

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

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

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

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

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

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

ব্যাচ অপারেশন সঞ্চালন

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

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

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

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

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

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

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

অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) অভ্যন্তরীণ সঞ্চয়স্থানে তাদের ডেটা ডিরেক্টরিতে কোন অ্যাপগুলি ফাইলগুলিকে অন্য অ্যাপগুলিতে অ্যাক্সেসযোগ্য করে তুলতে পারে তা সীমাবদ্ধ করতে শুরু করেছে৷ যে অ্যাপগুলি Android 9 বা উচ্চতরকে লক্ষ্য করে তাদের ডেটা ডিরেক্টরির ফাইলগুলিকে বিশ্ব-অ্যাক্সেসযোগ্য করে তুলতে পারে না

অ্যান্ড্রয়েড 11 এই সীমাবদ্ধতার উপর প্রসারিত হয়। যদি আপনার অ্যাপটি Android 11-কে টার্গেট করে, তবে এটি অন্য কোনও অ্যাপের ডেটা ডিরেক্টরির ফাইলগুলি অ্যাক্সেস করতে পারে না, এমনকি যদি অন্য অ্যাপটি Android 8.1 (API লেভেল 27) বা তার নিচের দিকে লক্ষ্য করে এবং তার ডেটা ডিরেক্টরির ফাইলগুলিকে বিশ্ব-পঠনযোগ্য করে তোলে।

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

অ্যান্ড্রয়েড 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 ডিরেক্টরি প্রদর্শিত হচ্ছে এবং ডিরেক্টরির সাথে যুক্ত অ্যাকশন বোতামটি ধূসর হয়ে গেছে তা পরীক্ষা করুন।

অনুমতি

Android 11 স্টোরেজ অনুমতি সম্পর্কিত নিম্নলিখিত পরিবর্তনগুলি প্রবর্তন করে।

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

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

আপনার অ্যাপের টার্গেট SDK সংস্করণ নির্বিশেষে নিম্নলিখিত পরিবর্তনগুলি Android 11-এ কার্যকর হয়:

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

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

টার্গেট Android 11

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

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

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

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

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

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

ব্লগ পোস্ট

ভিডিও