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

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

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

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

একটি অ্যাপ নিম্নলিখিতগুলি করে ব্যবহারকারীর কাছ থেকে সমস্ত ফাইল অ্যাক্সেসের অনুরোধ করতে পারে:

  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 বা সরাসরি ফাইল পাথ ব্যবহার করে এই অতিরিক্ত ফাইল এবং ডিরেক্টরিগুলি অ্যাক্সেস করতে পারে৷ আপনি যখন স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক ব্যবহার করেন, তবে, আপনি শুধুমাত্র একটি ফাইল বা ডিরেক্টরি অ্যাক্সেস করতে পারবেন যদি আপনি 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 স্টোর Android 11 (API লেভেল 30) বা উচ্চতর অ্যাপ্লিকেশানগুলিকে লক্ষ্য করে মূল্যায়ন করার জন্য এবং MANAGE_EXTERNAL_STORAGE অনুমতির মাধ্যমে সমস্ত ফাইল অ্যাক্সেসের অনুরোধ করার জন্য তার নীতি আপডেট করেছে ৷ এই নীতিটি মে 2021 থেকে কার্যকর হবে৷

যখন আপনার অ্যাপ অ্যান্ড্রয়েড 11 বা উচ্চতরকে লক্ষ্য করে এবং এটি MANAGE_EXTERNAL_STORAGE অনুমতি ঘোষণা করে, তখন Android স্টুডিও চিত্র 1-এ প্রদর্শিত লিন্ট সতর্কতা দেখায়। এই সতর্কতা আপনাকে মনে করিয়ে দেয় যে Google Play স্টোরের একটি নীতি রয়েছে যা অনুমতির ব্যবহার সীমিত করে।

চিত্র 1. অ্যান্ড্রয়েড স্টুডিওতে লিন্ট সতর্কতা যা ডেভেলপারদের MANAGE_EXTERNAL_STORAGE অনুমতি সম্পর্কিত Google Play নীতি সম্পর্কে মনে করিয়ে দেয়।

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

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