স্টোরেজ ডিভাইসে সব ফাইল ম্যানেজ করা

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

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

সব ফাইল অ্যাক্সেস করার অনুরোধ করুন

কোনও অ্যাপ নিম্নলিখিত উপায়ে ব্যবহারকারীর থেকে সব-ফাইল অ্যাক্সেসের অনুরোধ করতে পারে:

  1. ম্যানিফেস্টে MANAGE_EXTERNAL_STORAGE অনুমতি ঘোষণা করুন।
  2. ব্যবহারকারীদের সিস্টেম সেটিংস পৃষ্ঠায় নিয়ে যেতে ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION ইনটেন্ট অ্যাকশন ব্যবহার করুন, যেখানে তারা আপনার অ্যাপের জন্য নিম্নলিখিত বিকল্প চালু করতে পারবেন: সব ফাইল ম্যানেজ করার অ্যাক্সেস দিন।

আপনার অ্যাপকে MANAGE_EXTERNAL_STORAGE অনুমতি দেওয়া হয়েছে কিনা তা নির্ধারণ করতে, Environment.isExternalStorageManager() কল করুন।

MANAGE_EXTERNAL_STORAGE-এর মাধ্যমে অনুমোদিত অপারেশন

MANAGE_EXTERNAL_STORAGE অনুমতি নিম্নলিখিত সুবিধা প্রদান করে:

  • শেয়ার করা স্টোরেজ-এর মধ্যে থাকা সব ফাইল রিড ও রাইট করার অ্যাক্সেস।

  • MediaStore.Files টেবিলের কন্টেন্ট অ্যাক্সেস করুন।

  • USB অন-দ্য-গো (OTG) ড্রাইভ এবং SD কার্ড, দুটিরই রুট ডিরেক্টরিতে অ্যাক্সেস।

  • /Android/data/, /sdcard/Android এবং /sdcard/Android-এর বেশিরভাগ সাবডিরেক্টরি⁠ ছাড়া সব ইন্টার্নাল স্টোরেজ ডিরেক্টরিতে রাইট অ্যাক্সেস। এই লেখার অ্যাক্সেসে ডিরেক্ট ফাইল পাথ অ্যাক্সেস অন্তর্ভুক্ত।

    এই অনুমতি পাওয়া অ্যাপগুলি এখনও অন্যান্য অ্যাপের অ্যাপ-নির্দিষ্ট ডিরেক্টরি অ্যাক্সেস করতে পারে না, কারণ এই ডিরেক্টরিগুলি স্টোরেজ ভলিউমে Android/data/-এর সাবডিরেক্টরি হিসেবে দেখা যায়।

কোনও অ্যাপের কাছে MANAGE_EXTERNAL_STORAGE অনুমতি থাকলে, এটি MediaStore API বা ডাইরেক্ট ফাইল পাথ ব্যবহার করে এইসব অতিরিক্ত ফাইল ও ডিরেক্টরি অ্যাক্সেস করতে পারে। তবে, আপনি Storage Access Framework ব্যবহার করলে, MANAGE_EXTERNAL_STORAGE অনুমতি না থাকলেও আপনি ফাইল বা ডিরেক্টরি অ্যাক্সেস করতে পারবেন।

অন্য অ্যাপের স্টোরেজ ম্যানেজমেন্ট অ্যাক্টিভিটি চালু করুন

Android 12 (API লেভেল 31) ও তার পরবর্তী যেকোনও ভার্সনে, যেসব অ্যাপের কাছে MANAGE_EXTERNAL_STORAGE ও QUERY_ALL_PACKAGES —যেমন ফাইল ম্যানেজমেন্ট অ্যাপ—উভয় অনুমতিই আছে, সেগুলি getManageSpaceActivityIntent() ব্যবহার করে ব্যবহারকারীদের অন্য অ্যাপের কাস্টম স্পেস ম্যানেজমেন্ট অ্যাক্টিভিটিতে পাঠাতে পারে।

getManageSpaceActivityIntent() পদ্ধতিতে প্যাকেজের নাম ও অনুরোধের কোড লাগে এবং এটি নিম্নলিখিতগুলির মধ্যে একটি রিটার্ন করে:

  • একটি PendingIntent, যদি নির্দিষ্ট প্যাকেজের নাম সহ অ্যাপটি একটি কাস্টম "স্পেস ম্যানেজ করুন" অ্যাক্টিভিটি সংজ্ঞায়িত করে থাকে। getManageSpaceActivityIntent() মেথড কল করা ফাইল ম্যানেজমেন্ট অ্যাপ, ব্যবহারকারীকে কাস্টম অ্যাক্টিভিটিতে পাঠাতে ফেরত পাঠানো ইনটেন্টকে ইনভোক করতে পারে।
  • null, যদি নির্দিষ্ট প্যাকেজের নাম সহ অ্যাপটি "স্পেস ম্যানেজ করুন" অ্যাক্টিভিটি সংজ্ঞায়িত না করে।

পরীক্ষা করার জন্য MANAGE_EXTERNAL_STORAGE চালু করুন

MANAGE_EXTERNAL_STORAGE অনুমতি আপনার অ্যাপকে কীভাবে প্রভাবিত করে তা এক্সপ্লোর করতে, আপনি টেস্টিংয়ের জন্য অনুমতি চালু করতে পারেন। এটি করতে, আপনার টেস্ট ডিভাইসের সাথে কানেক্ট করা মেশিনে নিম্নলিখিত কমান্ড রান করুন:

adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow

Google Play বিজ্ঞপ্তি

এই বিভাগে Google Play-তে অ্যাপ প্রকাশ করা ডেভেলপারদের জন্য বিজ্ঞপ্তি দেওয়া হয়েছে।

শেয়ার করা স্টোরেজে ব্রড অ্যাক্সেস সীমিত করতে, Google Play Store তার নীতি আপডেট করেছে যাতে Android ১১ (API লেভেল ৩০) বা তার পরবর্তী ভার্সনকে টার্গেট করা অ্যাপ মূল্যায়ন করা যায় এবং MANAGE_EXTERNAL_STORAGE অনুমতির মাধ্যমে সব-ফাইল অ্যাক্সেসের অনুরোধ করা যায়। এই নীতি মে ২০২১ থেকে কার্যকর হয়েছে।

আপনার অ্যাপ Android 11 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে এবং এটি MANAGE_EXTERNAL_STORAGE অনুমতি ঘোষণা করলে, Android Studio লিন্ট সংক্রান্ত সতর্কতা দেখায় যা ছবি ১-এ দেখানো হয়েছে। এই সতর্কতা আপনাকে মনে করিয়ে দেয় যে Google Play Store-এর এমন একটি নীতি আছে যা অনুমতি ব্যবহারের সীমা নির্ধারণ করে।

ছবি ১. Android Studio-তে লিন্ট সংক্রান্ত সতর্কতা যা আপনাকে MANAGE_EXTERNAL_STORAGE অনুমতি সংক্রান্ত Google Play নীতি সম্পর্কে মনে করিয়ে দেয়।

আপনার অ্যাপ যখন Storage Access Framework বা Media Store API-এর মতো গোপনীয়তার অধিকার বজায় রাখার পক্ষে উপযুক্ত API কার্যকরভাবে ব্যবহার করতে পারে না, শুধুমাত্র তখনই MANAGE_EXTERNAL_STORAGE অনুমতির জন্য অনুরোধ করুন। আপনার অ্যাপের অনুমতি ব্যবহার অবশ্যই অনুমোদিত ব্যবহারের মধ্যে হতে হবে এবং অ্যাপের মূল কার্যকারিতার সাথে সরাসরি যুক্ত হতে হবে। আপনার অ্যাপে যদি নিম্নলিখিতগুলির মতো কোনও ব্যবহারের ক্ষেত্র অন্তর্ভুক্ত থাকে, তাহলে এটি সম্ভবত MANAGE_EXTERNAL_STORAGE অনুমতির জন্য অনুরোধ করতে পারে:

  • ফাইল ম্যানেজার
  • অ্যাপ ব্যাক-আপ নেওয়া ও ফিরিয়ে আনা
  • অ্যান্টি-ভাইরাস অ্যাপ
  • ডকুমেন্ট ম্যানেজমেন্ট অ্যাপ
  • অন-ডিভাইস ফাইল সার্চ
  • ডিস্ক ও ফাইল এনক্রিপশন
  • ডিভাইস থেকে ডিভাইসে ডেটা মাইগ্রেশন