বেশিরভাগ অ্যাপ যাদের শেয়ার্ড স্টোরেজ অ্যাক্সেসের প্রয়োজন হয় তারা মিডিয়া ফাইল শেয়ারিং এবং নন-মিডিয়া ফাইল শেয়ারিং এর জন্য সেরা অনুশীলনগুলি অনুসরণ করতে পারে। যাইহোক, কিছু অ্যাপের মূল ব্যবহারের ক্ষেত্রে ডিভাইসে ফাইলগুলিতে বিস্তৃত অ্যাক্সেসের প্রয়োজন হয়, কিন্তু গোপনীয়তা-বান্ধব স্টোরেজ সেরা অনুশীলনগুলি ব্যবহার করে দক্ষতার সাথে সেগুলি অ্যাক্সেস করতে পারে না। এই পরিস্থিতিতে অ্যান্ড্রয়েড অল-ফাইল অ্যাক্সেস নামে একটি বিশেষ অ্যাপ অ্যাক্সেস প্রদান করে।
উদাহরণস্বরূপ, একটি অ্যান্টি-ভাইরাস অ্যাপের প্রাথমিক ব্যবহারের ক্ষেত্রে বিভিন্ন ডিরেক্টরি জুড়ে নিয়মিত অনেক ফাইল স্ক্যান করার প্রয়োজন হতে পারে। যদি এই স্ক্যানিংয়ের জন্য সিস্টেম ফাইল পিকার ব্যবহার করে ডিরেক্টরি নির্বাচন করার জন্য বারবার ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রয়োজন হয়, তাহলে এটি একটি খারাপ ব্যবহারকারীর অভিজ্ঞতা প্রদান করে। অন্যান্য ব্যবহারের ক্ষেত্রে - যেমন ফাইল ম্যানেজার অ্যাপ, ব্যাকআপ এবং পুনরুদ্ধার অ্যাপ এবং ডকুমেন্ট ম্যানেজমেন্ট অ্যাপ - একই রকম বিবেচনার প্রয়োজন।
সমস্ত ফাইল অ্যাক্সেসের অনুরোধ করুন
একটি অ্যাপ নিম্নলিখিত কাজ করে ব্যবহারকারীর কাছ থেকে সমস্ত ফাইল অ্যাক্সেসের অনুরোধ করতে পারে:
- ম্যানিফেস্টে
MANAGE_EXTERNAL_STORAGEঅনুমতি ঘোষণা করুন। - ব্যবহারকারীদের একটি সিস্টেম সেটিংস পৃষ্ঠায় নির্দেশিত করতে
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 অথবা direct file path ব্যবহার করে এই অতিরিক্ত ফাইল এবং ডিরেক্টরিগুলি অ্যাক্সেস করতে পারে। তবে, যখন আপনি স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক ব্যবহার করেন, তখন আপনি কেবল তখনই একটি ফাইল বা ডিরেক্টরি অ্যাক্সেস করতে পারবেন যদি আপনি MANAGE_EXTERNAL_STORAGE অনুমতি ছাড়াই তা করতে পারেন।
অন্য অ্যাপের স্টোরেজ ম্যানেজমেন্ট অ্যাক্টিভিটি শুরু করুন
অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) এবং তার উচ্চতর সংস্করণে, যেসব অ্যাপের 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 স্টোর Android 11 (API লেভেল 30) বা তার বেশি ভার্সনের অ্যাপগুলি মূল্যায়ন করার জন্য তার নীতি আপডেট করেছে এবং MANAGE_EXTERNAL_STORAGE অনুমতির মাধ্যমে সমস্ত ফাইল অ্যাক্সেসের অনুরোধ করেছে। এই নীতিটি মে 2021 থেকে কার্যকর।
যখন আপনার অ্যাপটি Android 11 বা তার উচ্চতর ভার্সনকে টার্গেট করে এবং MANAGE_EXTERNAL_STORAGE অনুমতি ঘোষণা করে, তখন Android Studio চিত্র 1-এ প্রদর্শিত লিন্ট সতর্কতাটি দেখায়। এই সতর্কতা আপনাকে মনে করিয়ে দেয় যে Google Play স্টোরের একটি নীতি রয়েছে যা অনুমতির ব্যবহার সীমিত করে।
MANAGE_EXTERNAL_STORAGE অনুমতি সম্পর্কিত Google Play নীতি সম্পর্কে মনে করিয়ে দেয়। MANAGE_EXTERNAL_STORAGE অনুমতির জন্য অনুরোধ করুন শুধুমাত্র তখনই যখন আপনার অ্যাপটি স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক বা মিডিয়া স্টোর API এর মতো গোপনীয়তা-বান্ধব API গুলি কার্যকরভাবে ব্যবহার করতে না পারে। আপনার অ্যাপের অনুমতির ব্যবহার অনুমোদিত ব্যবহারের মধ্যে পড়তে হবে এবং সরাসরি অ্যাপের মূল কার্যকারিতার সাথে সম্পর্কিত হতে হবে। যদি আপনার অ্যাপটিতে নিম্নলিখিতগুলির মতো কোনও ব্যবহারের ক্ষেত্রে থাকে, তাহলে সম্ভবত এটি MANAGE_EXTERNAL_STORAGE অনুমতির জন্য অনুরোধ করতে পারে:
- ফাইল ম্যানেজার
- অ্যাপগুলির ব্যাকআপ এবং পুনরুদ্ধার করুন
- অ্যান্টি-ভাইরাস অ্যাপস
- ডকুমেন্ট ম্যানেজমেন্ট অ্যাপস
- ডিভাইসে ফাইল অনুসন্ধান
- ডিস্ক এবং ফাইল এনক্রিপশন
- ডিভাইস থেকে ডিভাইসে ডেটা মাইগ্রেশন