অ্যান্ড্রয়েড একটি ফাইল সিস্টেম ব্যবহার করে যা অন্যান্য প্ল্যাটফর্মে ডিস্ক-ভিত্তিক ফাইল সিস্টেমের মতো। আপনার অ্যাপ ডেটা সংরক্ষণ করার জন্য সিস্টেমটি আপনার জন্য বেশ কয়েকটি বিকল্প সরবরাহ করে:
- অ্যাপ-নির্দিষ্ট সঞ্চয়স্থান: অভ্যন্তরীণ স্টোরেজ ভলিউমের মধ্যে ডেডিকেটেড ডিরেক্টরিতে অথবা বাহ্যিক স্টোরেজের মধ্যে বিভিন্ন ডেডিকেটেড ডিরেক্টরিতে ফাইলগুলি সংরক্ষণ করুন যা শুধুমাত্র আপনার অ্যাপের ব্যবহারের জন্য। সংবেদনশীল তথ্য সংরক্ষণ করতে অভ্যন্তরীণ সঞ্চয়স্থানের মধ্যে ডিরেক্টরিগুলি ব্যবহার করুন যা অন্য অ্যাপগুলির অ্যাক্সেস করা উচিত নয়৷
- শেয়ার্ড স্টোরেজ: আপনার অ্যাপ মিডিয়া, ডকুমেন্ট এবং অন্যান্য ফাইল সহ অন্যান্য অ্যাপের সাথে শেয়ার করতে চায় এমন ফাইলগুলি সঞ্চয় করুন।
- পছন্দসমূহ: মূল-মান জোড়ায় ব্যক্তিগত, আদিম ডেটা সঞ্চয় করুন।
- ডেটাবেস: রুম পারসিসটেন্স লাইব্রেরি ব্যবহার করে একটি ব্যক্তিগত ডাটাবেসে কাঠামোগত ডেটা সংরক্ষণ করুন।
এই বিকল্পগুলির বৈশিষ্ট্যগুলি নিম্নলিখিত সারণীতে সংক্ষিপ্ত করা হয়েছে:
বিষয়বস্তুর প্রকার | অ্যাক্সেস পদ্ধতি | অনুমতি প্রয়োজন | অন্যান্য অ্যাপ্লিকেশন অ্যাক্সেস করতে পারেন? | ফাইলগুলি অ্যাপ আনইনস্টল করার সময় সরানো হয়েছে? | |
---|---|---|---|---|---|
অ্যাপ-নির্দিষ্ট ফাইল | ফাইলগুলি শুধুমাত্র আপনার অ্যাপের ব্যবহারের জন্য | অভ্যন্তরীণ স্টোরেজ থেকে, getFilesDir() বা getCacheDir() বাহ্যিক সঞ্চয়স্থান থেকে, getExternalFilesDir() বা getExternalCacheDir() | অভ্যন্তরীণ স্টোরেজের জন্য কখনই প্রয়োজন হয় না অ্যান্ড্রয়েড 4.4 (API লেভেল 19) বা উচ্চতর ডিভাইসে আপনার অ্যাপ ব্যবহার করা হলে এক্সটার্নাল স্টোরেজের জন্য প্রয়োজন হয় না | না | হ্যাঁ |
মিডিয়া | শেয়ার করা যায় এমন মিডিয়া ফাইল (ছবি, অডিও ফাইল, ভিডিও) | MediaStore এপিআই | Android 11 (API লেভেল 30) বা তার উপরে অন্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE Android 10 (API স্তর 29) এ অন্যান্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE বা WRITE_EXTERNAL_STORAGE Android 9 (API স্তর 28) বা তার নিচের সমস্ত ফাইলের জন্য অনুমতি প্রয়োজন৷ | হ্যাঁ, যদিও অন্য অ্যাপটির READ_EXTERNAL_STORAGE অনুমতি প্রয়োজন৷ | না |
নথি এবং অন্যান্য ফাইল | ডাউনলোড করা ফাইল সহ অন্যান্য ধরনের শেয়ার করা যায় এমন কন্টেন্ট | স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক | কোনোটিই নয় | হ্যাঁ, সিস্টেম ফাইল পিকারের মাধ্যমে | না |
অ্যাপ পছন্দ | কী-মান জোড়া | জেটপ্যাক পছন্দ লাইব্রেরি | কোনোটিই নয় | না | হ্যাঁ |
ডাটাবেস | স্ট্রাকচার্ড ডেটা | রুম অধ্যবসায় লাইব্রেরি | কোনোটিই নয় | না | হ্যাঁ |
আপনি যে সমাধানটি চয়ন করেন তা আপনার নির্দিষ্ট চাহিদার উপর নির্ভর করে:
- আপনার ডেটার জন্য কত জায়গা প্রয়োজন?
- অভ্যন্তরীণ সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডেটার জন্য সীমিত স্থান রয়েছে। আপনার যদি যথেষ্ট পরিমাণ ডেটা সংরক্ষণ করতে হয় তবে অন্যান্য ধরণের স্টোরেজ ব্যবহার করুন।
- ডেটা অ্যাক্সেস কতটা নির্ভরযোগ্য হওয়া দরকার?
- যদি আপনার অ্যাপের মৌলিক কার্যকারিতার জন্য নির্দিষ্ট ডেটার প্রয়োজন হয়, যেমন আপনার অ্যাপ কখন শুরু হয়, ডেটা অভ্যন্তরীণ স্টোরেজ ডিরেক্টরি বা ডাটাবেসের মধ্যে রাখুন। বাহ্যিক সঞ্চয়স্থানে সংরক্ষিত অ্যাপ-নির্দিষ্ট ফাইলগুলি সর্বদা অ্যাক্সেসযোগ্য নয় কারণ কিছু ডিভাইস ব্যবহারকারীদের বহিরাগত স্টোরেজের সাথে সামঞ্জস্যপূর্ণ একটি শারীরিক ডিভাইস সরাতে দেয়।
- আপনি কি ধরনের তথ্য সংরক্ষণ করতে হবে?
- যদি আপনার কাছে এমন ডেটা থাকে যা শুধুমাত্র আপনার অ্যাপের জন্য অর্থপূর্ণ, তাহলে অ্যাপ-নির্দিষ্ট স্টোরেজ ব্যবহার করুন। শেয়ার করা যায় এমন মিডিয়া সামগ্রীর জন্য, শেয়ার্ড স্টোরেজ ব্যবহার করুন যাতে অন্যান্য অ্যাপগুলি সামগ্রী অ্যাক্সেস করতে পারে। স্ট্রাকচার্ড ডেটার জন্য, হয় পছন্দ (কী-মানের ডেটার জন্য) অথবা একটি ডাটাবেস ব্যবহার করুন (2টির বেশি কলাম রয়েছে এমন ডেটার জন্য)।
- ডেটা কি আপনার অ্যাপে ব্যক্তিগত হওয়া উচিত?
- সংবেদনশীল ডেটা সংরক্ষণ করার সময়—যে ডেটা অন্য কোনো অ্যাপ থেকে অ্যাক্সেসযোগ্য নয়—অভ্যন্তরীণ স্টোরেজ, পছন্দ বা ডেটাবেস ব্যবহার করুন। অভ্যন্তরীণ স্টোরেজ ব্যবহারকারীদের কাছ থেকে ডেটা লুকানোর অতিরিক্ত সুবিধা রয়েছে।
স্টোরেজ অবস্থানের বিভাগ
অ্যান্ড্রয়েড দুই ধরনের ফিজিক্যাল স্টোরেজ লোকেশন প্রদান করে: ইন্টারনাল স্টোরেজ এবং এক্সটার্নাল স্টোরেজ । বেশিরভাগ ডিভাইসে, অভ্যন্তরীণ সঞ্চয়স্থান বাহ্যিক সঞ্চয়ের চেয়ে ছোট। যাইহোক, অভ্যন্তরীণ সঞ্চয়স্থান সবসময় সমস্ত ডিভাইসে উপলব্ধ থাকে, এটি আপনার অ্যাপ নির্ভর করে এমন ডেটা রাখার জন্য এটিকে আরও নির্ভরযোগ্য জায়গা করে তোলে।
অপসারণযোগ্য ভলিউম, যেমন একটি SD কার্ড, বহিরাগত স্টোরেজের অংশ হিসাবে ফাইল সিস্টেমে উপস্থিত হয়। অ্যান্ড্রয়েড এই ডিভাইসগুলিকে একটি পাথ ব্যবহার করে প্রতিনিধিত্ব করে, যেমন /sdcard
।
অ্যাপগুলি ডিফল্টরূপে অভ্যন্তরীণ স্টোরেজের মধ্যে সংরক্ষণ করা হয়। যদি আপনার APK আকার খুব বড় হয়, তবে, আপনি পরিবর্তে বাহ্যিক সঞ্চয়স্থানে আপনার অ্যাপ ইনস্টল করার জন্য আপনার অ্যাপের ম্যানিফেস্ট ফাইলের মধ্যে একটি পছন্দ নির্দেশ করতে পারেন:
<manifest ... android:installLocation="preferExternal"> ... </manifest>
অনুমতি এবং বহিরাগত স্টোরেজ অ্যাক্সেস
Android নিম্নলিখিত স্টোরেজ-সম্পর্কিত অনুমতিগুলিকে সংজ্ঞায়িত করে: READ_EXTERNAL_STORAGE
, WRITE_EXTERNAL_STORAGE
, এবং MANAGE_EXTERNAL_STORAGE
।
অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যে কোনও ফাইল অ্যাক্সেস করার জন্য অ্যাপগুলিকে READ_EXTERNAL_STORAGE
অনুমতি ঘোষণা করতে হবে। এছাড়াও, অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যেকোন ফাইলে লেখার জন্য WRITE_EXTERNAL_STORAGE
অনুমতি ঘোষণা করার জন্য অ্যাপগুলির প্রয়োজন।
অ্যান্ড্রয়েডের সাম্প্রতিক সংস্করণগুলি একটি প্রদত্ত ফাইল অ্যাক্সেস এবং লিখতে একটি অ্যাপের ক্ষমতা নির্ধারণের জন্য ফাইলের অবস্থানের চেয়ে ফাইলের উদ্দেশ্যের উপর বেশি নির্ভর করে। বিশেষ করে, যদি আপনার অ্যাপটি Android 11 (API লেভেল 30) বা উচ্চতরকে টার্গেট করে, তাহলে WRITE_EXTERNAL_STORAGE
অনুমতি আপনার অ্যাপের স্টোরেজ অ্যাক্সেসে কোনো প্রভাব ফেলবে না। এই উদ্দেশ্য-ভিত্তিক স্টোরেজ মডেলটি ব্যবহারকারীর গোপনীয়তা উন্নত করে কারণ অ্যাপগুলিকে শুধুমাত্র ডিভাইসের ফাইল সিস্টেমের এলাকায় অ্যাক্সেস দেওয়া হয় যা তারা আসলে ব্যবহার করে।
Android 11 MANAGE_EXTERNAL_STORAGE
অনুমতি প্রবর্তন করে, যা অ্যাপ-নির্দিষ্ট ডিরেক্টরি এবং MediaStore
বাইরের ফাইলগুলিতে লেখার অ্যাক্সেস প্রদান করে। এই অনুমতি সম্পর্কে আরও জানতে, এবং কেন বেশিরভাগ অ্যাপকে তাদের ব্যবহারের ক্ষেত্রে এটি ঘোষণা করতে হবে না, স্টোরেজ ডিভাইসে সমস্ত ফাইল কীভাবে পরিচালনা করবেন তার নির্দেশিকা দেখুন।
স্কোপড স্টোরেজ
ব্যবহারকারীদের তাদের ফাইলের উপর আরও নিয়ন্ত্রণ দিতে এবং ফাইলের বিশৃঙ্খলা সীমিত করতে, Android 10 (API স্তর 29) এবং উচ্চতরকে লক্ষ্য করে এমন অ্যাপগুলিকে ডিফল্টরূপে বাহ্যিক সঞ্চয়স্থানে বা স্কোপড স্টোরেজে স্কোপড অ্যাক্সেস দেওয়া হয়। এই ধরনের অ্যাপগুলির শুধুমাত্র এক্সটার্নাল স্টোরেজের অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে অ্যাক্সেস আছে, সেইসাথে অ্যাপটি তৈরি করা নির্দিষ্ট ধরনের মিডিয়াতে।
স্কোপড স্টোরেজ ব্যবহার করুন যদি না আপনার অ্যাপের এমন একটি ফাইলে অ্যাক্সেসের প্রয়োজন হয় যা একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে এবং MediaStore
APIগুলি অ্যাক্সেস করতে পারে এমন একটি ডিরেক্টরির বাইরে সঞ্চিত থাকে। আপনি যদি বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ফাইলগুলি সঞ্চয় করেন, তাহলে আপনি এই ফাইলগুলিকে বাহ্যিক সঞ্চয়স্থানে একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে রেখে স্কোপড স্টোরেজ গ্রহণ করা সহজ করতে পারেন৷ এইভাবে, স্কোপড স্টোরেজ সক্ষম করা থাকলে আপনার অ্যাপ এই ফাইলগুলিতে অ্যাক্সেস বজায় রাখে।
স্কোপড স্টোরেজের জন্য আপনার অ্যাপ প্রস্তুত করতে, স্টোরেজ ব্যবহারের ক্ষেত্রে এবং সেরা অনুশীলন নির্দেশিকা দেখুন। যদি আপনার অ্যাপের অন্য একটি ব্যবহারের ক্ষেত্রে থাকে যা স্কোপড স্টোরেজ দ্বারা আচ্ছাদিত না হয়, একটি বৈশিষ্ট্য অনুরোধ ফাইল করুন । আপনি স্কোপড স্টোরেজ ব্যবহার করে সাময়িকভাবে অপ্ট-আউট করতে পারেন।
একটি ডিভাইসে ফাইল দেখুন
একটি ডিভাইসে সঞ্চিত ফাইলগুলি দেখতে, অ্যান্ড্রয়েড স্টুডিওর ডিভাইস ফাইল এক্সপ্লোরার ব্যবহার করুন।
অতিরিক্ত সম্পদ
ডেটা স্টোরেজ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন৷
ভিডিও
,অ্যান্ড্রয়েড একটি ফাইল সিস্টেম ব্যবহার করে যা অন্যান্য প্ল্যাটফর্মে ডিস্ক-ভিত্তিক ফাইল সিস্টেমের মতো। আপনার অ্যাপ ডেটা সংরক্ষণ করার জন্য সিস্টেমটি আপনার জন্য বেশ কয়েকটি বিকল্প সরবরাহ করে:
- অ্যাপ-নির্দিষ্ট সঞ্চয়স্থান: অভ্যন্তরীণ স্টোরেজ ভলিউমের মধ্যে ডেডিকেটেড ডিরেক্টরিতে অথবা বাহ্যিক স্টোরেজের মধ্যে বিভিন্ন ডেডিকেটেড ডিরেক্টরিতে ফাইলগুলি সংরক্ষণ করুন যা শুধুমাত্র আপনার অ্যাপের ব্যবহারের জন্য। সংবেদনশীল তথ্য সংরক্ষণ করতে অভ্যন্তরীণ সঞ্চয়স্থানের মধ্যে ডিরেক্টরিগুলি ব্যবহার করুন যা অন্য অ্যাপগুলির অ্যাক্সেস করা উচিত নয়৷
- শেয়ার্ড স্টোরেজ: আপনার অ্যাপ মিডিয়া, ডকুমেন্ট এবং অন্যান্য ফাইল সহ অন্যান্য অ্যাপের সাথে শেয়ার করতে চায় এমন ফাইলগুলি সঞ্চয় করুন।
- পছন্দসমূহ: মূল-মান জোড়ায় ব্যক্তিগত, আদিম ডেটা সঞ্চয় করুন।
- ডেটাবেস: রুম পারসিসটেন্স লাইব্রেরি ব্যবহার করে একটি ব্যক্তিগত ডাটাবেসে কাঠামোগত ডেটা সংরক্ষণ করুন।
এই বিকল্পগুলির বৈশিষ্ট্যগুলি নিম্নলিখিত সারণীতে সংক্ষিপ্ত করা হয়েছে:
বিষয়বস্তুর প্রকার | অ্যাক্সেস পদ্ধতি | অনুমতি প্রয়োজন | অন্যান্য অ্যাপ্লিকেশন অ্যাক্সেস করতে পারেন? | ফাইলগুলি অ্যাপ আনইনস্টল করার সময় সরানো হয়েছে? | |
---|---|---|---|---|---|
অ্যাপ-নির্দিষ্ট ফাইল | ফাইলগুলি শুধুমাত্র আপনার অ্যাপের ব্যবহারের জন্য | অভ্যন্তরীণ স্টোরেজ থেকে, getFilesDir() বা getCacheDir() বাহ্যিক সঞ্চয়স্থান থেকে, getExternalFilesDir() বা getExternalCacheDir() | অভ্যন্তরীণ স্টোরেজের জন্য কখনই প্রয়োজন হয় না অ্যান্ড্রয়েড 4.4 (API লেভেল 19) বা উচ্চতর ডিভাইসে আপনার অ্যাপ ব্যবহার করা হলে এক্সটার্নাল স্টোরেজের জন্য প্রয়োজন হয় না | না | হ্যাঁ |
মিডিয়া | শেয়ার করা যায় এমন মিডিয়া ফাইল (ছবি, অডিও ফাইল, ভিডিও) | MediaStore এপিআই | Android 11 (API লেভেল 30) বা তার উপরে অন্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE Android 10 (API স্তর 29) এ অন্যান্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE বা WRITE_EXTERNAL_STORAGE Android 9 (API স্তর 28) বা তার নিচের সমস্ত ফাইলের জন্য অনুমতি প্রয়োজন৷ | হ্যাঁ, যদিও অন্য অ্যাপটির READ_EXTERNAL_STORAGE অনুমতি প্রয়োজন৷ | না |
নথি এবং অন্যান্য ফাইল | ডাউনলোড করা ফাইল সহ অন্যান্য ধরনের শেয়ার করা যায় এমন কন্টেন্ট | স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক | কোনোটিই নয় | হ্যাঁ, সিস্টেম ফাইল পিকারের মাধ্যমে | না |
অ্যাপ পছন্দ | কী-মান জোড়া | জেটপ্যাক পছন্দ লাইব্রেরি | কোনোটিই নয় | না | হ্যাঁ |
ডাটাবেস | স্ট্রাকচার্ড ডেটা | রুম অধ্যবসায় লাইব্রেরি | কোনোটিই নয় | না | হ্যাঁ |
আপনি যে সমাধানটি চয়ন করেন তা আপনার নির্দিষ্ট চাহিদার উপর নির্ভর করে:
- আপনার ডেটার জন্য কত জায়গা প্রয়োজন?
- অভ্যন্তরীণ সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডেটার জন্য সীমিত স্থান রয়েছে। আপনার যদি যথেষ্ট পরিমাণ ডেটা সংরক্ষণ করতে হয় তবে অন্যান্য ধরণের স্টোরেজ ব্যবহার করুন।
- ডেটা অ্যাক্সেস কতটা নির্ভরযোগ্য হওয়া দরকার?
- যদি আপনার অ্যাপের মৌলিক কার্যকারিতার জন্য নির্দিষ্ট ডেটার প্রয়োজন হয়, যেমন আপনার অ্যাপ কখন শুরু হয়, ডেটা অভ্যন্তরীণ স্টোরেজ ডিরেক্টরি বা ডাটাবেসের মধ্যে রাখুন। বাহ্যিক সঞ্চয়স্থানে সংরক্ষিত অ্যাপ-নির্দিষ্ট ফাইলগুলি সর্বদা অ্যাক্সেসযোগ্য নয় কারণ কিছু ডিভাইস ব্যবহারকারীদের বহিরাগত স্টোরেজের সাথে সামঞ্জস্যপূর্ণ একটি শারীরিক ডিভাইস সরাতে দেয়।
- আপনি কি ধরনের তথ্য সংরক্ষণ করতে হবে?
- যদি আপনার কাছে এমন ডেটা থাকে যা শুধুমাত্র আপনার অ্যাপের জন্য অর্থপূর্ণ, তাহলে অ্যাপ-নির্দিষ্ট স্টোরেজ ব্যবহার করুন। শেয়ার করা যায় এমন মিডিয়া সামগ্রীর জন্য, শেয়ার্ড স্টোরেজ ব্যবহার করুন যাতে অন্যান্য অ্যাপগুলি সামগ্রী অ্যাক্সেস করতে পারে। স্ট্রাকচার্ড ডেটার জন্য, হয় পছন্দগুলি (কী-মানের ডেটার জন্য) বা একটি ডাটাবেস ব্যবহার করুন (2টির বেশি কলাম রয়েছে এমন ডেটার জন্য)।
- ডেটা কি আপনার অ্যাপে ব্যক্তিগত হওয়া উচিত?
- সংবেদনশীল ডেটা সংরক্ষণ করার সময়—যে ডেটা অন্য কোনো অ্যাপ থেকে অ্যাক্সেসযোগ্য নয়—অভ্যন্তরীণ স্টোরেজ, পছন্দ বা ডেটাবেস ব্যবহার করুন। অভ্যন্তরীণ স্টোরেজ ব্যবহারকারীদের কাছ থেকে ডেটা লুকানোর অতিরিক্ত সুবিধা রয়েছে।
স্টোরেজ অবস্থানের বিভাগ
অ্যান্ড্রয়েড দুই ধরনের ফিজিক্যাল স্টোরেজ লোকেশন প্রদান করে: ইন্টারনাল স্টোরেজ এবং এক্সটার্নাল স্টোরেজ । বেশিরভাগ ডিভাইসে, অভ্যন্তরীণ সঞ্চয়স্থান বাহ্যিক সঞ্চয়ের চেয়ে ছোট। যাইহোক, অভ্যন্তরীণ সঞ্চয়স্থান সবসময় সমস্ত ডিভাইসে উপলব্ধ থাকে, এটি আপনার অ্যাপ নির্ভর করে এমন ডেটা রাখার জন্য এটিকে আরও নির্ভরযোগ্য জায়গা করে তোলে।
অপসারণযোগ্য ভলিউম, যেমন একটি SD কার্ড, বহিরাগত স্টোরেজের অংশ হিসাবে ফাইল সিস্টেমে উপস্থিত হয়। অ্যান্ড্রয়েড এই ডিভাইসগুলিকে একটি পাথ ব্যবহার করে প্রতিনিধিত্ব করে, যেমন /sdcard
।
অ্যাপগুলি ডিফল্টরূপে অভ্যন্তরীণ স্টোরেজের মধ্যে সংরক্ষণ করা হয়। যদি আপনার APK আকার খুব বড় হয়, তবে, আপনি পরিবর্তে বাহ্যিক সঞ্চয়স্থানে আপনার অ্যাপ ইনস্টল করার জন্য আপনার অ্যাপের ম্যানিফেস্ট ফাইলের মধ্যে একটি পছন্দ নির্দেশ করতে পারেন:
<manifest ... android:installLocation="preferExternal"> ... </manifest>
অনুমতি এবং বহিরাগত স্টোরেজ অ্যাক্সেস
Android নিম্নলিখিত স্টোরেজ-সম্পর্কিত অনুমতিগুলিকে সংজ্ঞায়িত করে: READ_EXTERNAL_STORAGE
, WRITE_EXTERNAL_STORAGE
, এবং MANAGE_EXTERNAL_STORAGE
।
অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যে কোনও ফাইল অ্যাক্সেস করার জন্য অ্যাপগুলিকে READ_EXTERNAL_STORAGE
অনুমতি ঘোষণা করতে হবে। এছাড়াও, অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যেকোন ফাইলে লেখার জন্য WRITE_EXTERNAL_STORAGE
অনুমতি ঘোষণা করার জন্য অ্যাপগুলির প্রয়োজন।
অ্যান্ড্রয়েডের সাম্প্রতিক সংস্করণগুলি একটি প্রদত্ত ফাইল অ্যাক্সেস এবং লিখতে একটি অ্যাপের ক্ষমতা নির্ধারণের জন্য ফাইলের অবস্থানের চেয়ে ফাইলের উদ্দেশ্যের উপর বেশি নির্ভর করে। বিশেষ করে, যদি আপনার অ্যাপটি Android 11 (API লেভেল 30) বা উচ্চতরকে টার্গেট করে, তাহলে WRITE_EXTERNAL_STORAGE
অনুমতি আপনার অ্যাপের স্টোরেজ অ্যাক্সেসে কোনো প্রভাব ফেলবে না। এই উদ্দেশ্য-ভিত্তিক স্টোরেজ মডেলটি ব্যবহারকারীর গোপনীয়তা উন্নত করে কারণ অ্যাপগুলিকে শুধুমাত্র ডিভাইসের ফাইল সিস্টেমের এলাকায় অ্যাক্সেস দেওয়া হয় যা তারা আসলে ব্যবহার করে।
Android 11 MANAGE_EXTERNAL_STORAGE
অনুমতি প্রবর্তন করে, যা অ্যাপ-নির্দিষ্ট ডিরেক্টরি এবং MediaStore
বাইরের ফাইলগুলিতে লেখার অ্যাক্সেস প্রদান করে। এই অনুমতি সম্পর্কে আরও জানতে, এবং কেন বেশিরভাগ অ্যাপকে তাদের ব্যবহারের ক্ষেত্রে এটি ঘোষণা করতে হবে না, স্টোরেজ ডিভাইসে সমস্ত ফাইল কীভাবে পরিচালনা করবেন তার নির্দেশিকা দেখুন।
স্কোপড স্টোরেজ
ব্যবহারকারীদের তাদের ফাইলের উপর আরও নিয়ন্ত্রণ দিতে এবং ফাইলের বিশৃঙ্খলা সীমিত করতে, Android 10 (API স্তর 29) এবং উচ্চতরকে লক্ষ্য করে এমন অ্যাপগুলিকে ডিফল্টরূপে বাহ্যিক সঞ্চয়স্থানে বা স্কোপড স্টোরেজে স্কোপড অ্যাক্সেস দেওয়া হয়। এই ধরনের অ্যাপগুলির শুধুমাত্র এক্সটার্নাল স্টোরেজের অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে অ্যাক্সেস আছে, সেইসাথে অ্যাপটি তৈরি করা নির্দিষ্ট ধরনের মিডিয়াতে।
স্কোপড স্টোরেজ ব্যবহার করুন যদি না আপনার অ্যাপের এমন একটি ফাইলে অ্যাক্সেসের প্রয়োজন হয় যা একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে এবং MediaStore
APIগুলি অ্যাক্সেস করতে পারে এমন একটি ডিরেক্টরির বাইরে সঞ্চিত থাকে। আপনি যদি বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ফাইলগুলি সঞ্চয় করেন, তাহলে আপনি এই ফাইলগুলিকে বাহ্যিক সঞ্চয়স্থানে একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে রেখে স্কোপড স্টোরেজ গ্রহণ করা সহজ করতে পারেন৷ এইভাবে, স্কোপড স্টোরেজ সক্ষম করা থাকলে আপনার অ্যাপ এই ফাইলগুলিতে অ্যাক্সেস বজায় রাখে।
স্কোপড স্টোরেজের জন্য আপনার অ্যাপ প্রস্তুত করতে, স্টোরেজ ব্যবহারের ক্ষেত্রে এবং সেরা অনুশীলন নির্দেশিকা দেখুন। যদি আপনার অ্যাপের অন্য একটি ব্যবহারের ক্ষেত্রে থাকে যা স্কোপড স্টোরেজ দ্বারা আচ্ছাদিত না হয়, একটি বৈশিষ্ট্য অনুরোধ ফাইল করুন । আপনি স্কোপড স্টোরেজ ব্যবহার করে সাময়িকভাবে অপ্ট-আউট করতে পারেন।
একটি ডিভাইসে ফাইল দেখুন
একটি ডিভাইসে সঞ্চিত ফাইলগুলি দেখতে, অ্যান্ড্রয়েড স্টুডিওর ডিভাইস ফাইল এক্সপ্লোরার ব্যবহার করুন।
অতিরিক্ত সম্পদ
ডেটা স্টোরেজ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন৷
ভিডিও
,অ্যান্ড্রয়েড একটি ফাইল সিস্টেম ব্যবহার করে যা অন্যান্য প্ল্যাটফর্মে ডিস্ক-ভিত্তিক ফাইল সিস্টেমের মতো। আপনার অ্যাপ ডেটা সংরক্ষণ করার জন্য সিস্টেমটি আপনার জন্য বেশ কয়েকটি বিকল্প সরবরাহ করে:
- অ্যাপ-নির্দিষ্ট সঞ্চয়স্থান: অভ্যন্তরীণ স্টোরেজ ভলিউমের মধ্যে ডেডিকেটেড ডিরেক্টরিতে অথবা বাহ্যিক স্টোরেজের মধ্যে বিভিন্ন ডেডিকেটেড ডিরেক্টরিতে ফাইলগুলি সংরক্ষণ করুন যা শুধুমাত্র আপনার অ্যাপের ব্যবহারের জন্য। সংবেদনশীল তথ্য সংরক্ষণ করতে অভ্যন্তরীণ সঞ্চয়স্থানের মধ্যে ডিরেক্টরিগুলি ব্যবহার করুন যা অন্য অ্যাপগুলির অ্যাক্সেস করা উচিত নয়৷
- শেয়ার্ড স্টোরেজ: আপনার অ্যাপ মিডিয়া, ডকুমেন্ট এবং অন্যান্য ফাইল সহ অন্যান্য অ্যাপের সাথে শেয়ার করতে চায় এমন ফাইলগুলি সঞ্চয় করুন।
- পছন্দসমূহ: মূল-মান জোড়ায় ব্যক্তিগত, আদিম ডেটা সঞ্চয় করুন।
- ডেটাবেস: রুম পারসিসটেন্স লাইব্রেরি ব্যবহার করে একটি ব্যক্তিগত ডাটাবেসে কাঠামোগত ডেটা সংরক্ষণ করুন।
এই বিকল্পগুলির বৈশিষ্ট্যগুলি নিম্নলিখিত সারণীতে সংক্ষিপ্ত করা হয়েছে:
বিষয়বস্তুর প্রকার | অ্যাক্সেস পদ্ধতি | অনুমতি প্রয়োজন | অন্যান্য অ্যাপ্লিকেশন অ্যাক্সেস করতে পারেন? | ফাইলগুলি অ্যাপ আনইনস্টল করার সময় সরানো হয়েছে? | |
---|---|---|---|---|---|
অ্যাপ-নির্দিষ্ট ফাইল | ফাইলগুলি শুধুমাত্র আপনার অ্যাপের ব্যবহারের জন্য | অভ্যন্তরীণ স্টোরেজ থেকে, getFilesDir() বা getCacheDir() বাহ্যিক সঞ্চয়স্থান থেকে, getExternalFilesDir() বা getExternalCacheDir() | অভ্যন্তরীণ স্টোরেজের জন্য কখনই প্রয়োজন হয় না অ্যান্ড্রয়েড 4.4 (API লেভেল 19) বা উচ্চতর ডিভাইসে আপনার অ্যাপ ব্যবহার করা হলে এক্সটার্নাল স্টোরেজের জন্য প্রয়োজন হয় না | না | হ্যাঁ |
মিডিয়া | শেয়ার করা যায় এমন মিডিয়া ফাইল (ছবি, অডিও ফাইল, ভিডিও) | MediaStore এপিআই | Android 11 (API লেভেল 30) বা তার উপরে অন্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE Android 10 (API স্তর 29) এ অন্যান্য অ্যাপের ফাইল অ্যাক্সেস করার সময় READ_EXTERNAL_STORAGE বা WRITE_EXTERNAL_STORAGE Android 9 (API স্তর 28) বা তার নিচের সমস্ত ফাইলের জন্য অনুমতি প্রয়োজন৷ | হ্যাঁ, যদিও অন্য অ্যাপটির READ_EXTERNAL_STORAGE অনুমতি প্রয়োজন৷ | না |
নথি এবং অন্যান্য ফাইল | ডাউনলোড করা ফাইল সহ অন্যান্য ধরনের শেয়ার করা যায় এমন কন্টেন্ট | স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক | কোনোটিই নয় | হ্যাঁ, সিস্টেম ফাইল পিকারের মাধ্যমে | না |
অ্যাপ পছন্দ | কী-মান জোড়া | জেটপ্যাক পছন্দ লাইব্রেরি | কোনোটিই নয় | না | হ্যাঁ |
ডাটাবেস | স্ট্রাকচার্ড ডেটা | রুম অধ্যবসায় লাইব্রেরি | কোনোটিই নয় | না | হ্যাঁ |
আপনি যে সমাধানটি চয়ন করেন তা আপনার নির্দিষ্ট চাহিদার উপর নির্ভর করে:
- আপনার ডেটার জন্য কত জায়গা প্রয়োজন?
- অভ্যন্তরীণ সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডেটার জন্য সীমিত স্থান রয়েছে। আপনার যদি যথেষ্ট পরিমাণ ডেটা সংরক্ষণ করতে হয় তবে অন্যান্য ধরণের স্টোরেজ ব্যবহার করুন।
- ডেটা অ্যাক্সেস কতটা নির্ভরযোগ্য হওয়া দরকার?
- যদি আপনার অ্যাপের মৌলিক কার্যকারিতার জন্য নির্দিষ্ট ডেটার প্রয়োজন হয়, যেমন আপনার অ্যাপ কখন শুরু হয়, ডেটা অভ্যন্তরীণ স্টোরেজ ডিরেক্টরি বা ডাটাবেসের মধ্যে রাখুন। বাহ্যিক সঞ্চয়স্থানে সংরক্ষিত অ্যাপ-নির্দিষ্ট ফাইলগুলি সর্বদা অ্যাক্সেসযোগ্য নয় কারণ কিছু ডিভাইস ব্যবহারকারীদের বহিরাগত স্টোরেজের সাথে সামঞ্জস্যপূর্ণ একটি শারীরিক ডিভাইস সরাতে দেয়।
- আপনি কি ধরনের তথ্য সংরক্ষণ করতে হবে?
- যদি আপনার কাছে এমন ডেটা থাকে যা শুধুমাত্র আপনার অ্যাপের জন্য অর্থপূর্ণ, তাহলে অ্যাপ-নির্দিষ্ট স্টোরেজ ব্যবহার করুন। শেয়ার করা যায় এমন মিডিয়া সামগ্রীর জন্য, শেয়ার্ড স্টোরেজ ব্যবহার করুন যাতে অন্যান্য অ্যাপগুলি সামগ্রী অ্যাক্সেস করতে পারে। স্ট্রাকচার্ড ডেটার জন্য, হয় পছন্দগুলি (কী-মানের ডেটার জন্য) বা একটি ডাটাবেস ব্যবহার করুন (2টির বেশি কলাম রয়েছে এমন ডেটার জন্য)।
- ডেটা কি আপনার অ্যাপে ব্যক্তিগত হওয়া উচিত?
- সংবেদনশীল ডেটা সংরক্ষণ করার সময়—যে ডেটা অন্য কোনো অ্যাপ থেকে অ্যাক্সেসযোগ্য নয়—অভ্যন্তরীণ স্টোরেজ, পছন্দ বা ডেটাবেস ব্যবহার করুন। অভ্যন্তরীণ স্টোরেজ ব্যবহারকারীদের কাছ থেকে ডেটা লুকানোর অতিরিক্ত সুবিধা রয়েছে।
স্টোরেজ অবস্থানের বিভাগ
অ্যান্ড্রয়েড দুই ধরনের ফিজিক্যাল স্টোরেজ লোকেশন প্রদান করে: ইন্টারনাল স্টোরেজ এবং এক্সটার্নাল স্টোরেজ । বেশিরভাগ ডিভাইসে, অভ্যন্তরীণ সঞ্চয়স্থান বাহ্যিক সঞ্চয়ের চেয়ে ছোট। যাইহোক, অভ্যন্তরীণ সঞ্চয়স্থান সবসময় সমস্ত ডিভাইসে উপলব্ধ থাকে, এটি আপনার অ্যাপ নির্ভর করে এমন ডেটা রাখার জন্য এটিকে আরও নির্ভরযোগ্য জায়গা করে তোলে।
অপসারণযোগ্য ভলিউম, যেমন একটি SD কার্ড, বহিরাগত স্টোরেজের অংশ হিসাবে ফাইল সিস্টেমে উপস্থিত হয়। অ্যান্ড্রয়েড এই ডিভাইসগুলিকে একটি পাথ ব্যবহার করে প্রতিনিধিত্ব করে, যেমন /sdcard
।
অ্যাপগুলি ডিফল্টরূপে অভ্যন্তরীণ স্টোরেজের মধ্যে সংরক্ষণ করা হয়। যদি আপনার APK আকার খুব বড় হয়, তবে, আপনি পরিবর্তে বাহ্যিক সঞ্চয়স্থানে আপনার অ্যাপ ইনস্টল করার জন্য আপনার অ্যাপের ম্যানিফেস্ট ফাইলের মধ্যে একটি পছন্দ নির্দেশ করতে পারেন:
<manifest ... android:installLocation="preferExternal"> ... </manifest>
অনুমতি এবং বহিরাগত স্টোরেজ অ্যাক্সেস
Android নিম্নলিখিত স্টোরেজ-সম্পর্কিত অনুমতিগুলিকে সংজ্ঞায়িত করে: READ_EXTERNAL_STORAGE
, WRITE_EXTERNAL_STORAGE
, এবং MANAGE_EXTERNAL_STORAGE
।
অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যে কোনও ফাইল অ্যাক্সেস করার জন্য অ্যাপগুলিকে READ_EXTERNAL_STORAGE
অনুমতি ঘোষণা করতে হবে। এছাড়াও, অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে যেকোন ফাইলে লেখার জন্য WRITE_EXTERNAL_STORAGE
অনুমতি ঘোষণা করার জন্য অ্যাপগুলির প্রয়োজন।
অ্যান্ড্রয়েডের সাম্প্রতিক সংস্করণগুলি একটি প্রদত্ত ফাইল অ্যাক্সেস এবং লিখতে একটি অ্যাপের ক্ষমতা নির্ধারণের জন্য ফাইলের অবস্থানের চেয়ে ফাইলের উদ্দেশ্যের উপর বেশি নির্ভর করে। বিশেষ করে, যদি আপনার অ্যাপটি Android 11 (API লেভেল 30) বা উচ্চতরকে টার্গেট করে, তাহলে WRITE_EXTERNAL_STORAGE
অনুমতি আপনার অ্যাপের স্টোরেজ অ্যাক্সেসে কোনো প্রভাব ফেলবে না। এই উদ্দেশ্য-ভিত্তিক স্টোরেজ মডেলটি ব্যবহারকারীর গোপনীয়তা উন্নত করে কারণ অ্যাপগুলিকে শুধুমাত্র ডিভাইসের ফাইল সিস্টেমের এলাকায় অ্যাক্সেস দেওয়া হয় যা তারা আসলে ব্যবহার করে।
Android 11 MANAGE_EXTERNAL_STORAGE
অনুমতি প্রবর্তন করে, যা অ্যাপ-নির্দিষ্ট ডিরেক্টরি এবং MediaStore
বাইরের ফাইলগুলিতে লেখার অ্যাক্সেস প্রদান করে। এই অনুমতি সম্পর্কে আরও জানতে, এবং কেন বেশিরভাগ অ্যাপকে তাদের ব্যবহারের ক্ষেত্রে এটি ঘোষণা করতে হবে না, স্টোরেজ ডিভাইসে সমস্ত ফাইল কীভাবে পরিচালনা করবেন তার নির্দেশিকা দেখুন।
স্কোপড স্টোরেজ
ব্যবহারকারীদের তাদের ফাইলের উপর আরও নিয়ন্ত্রণ দিতে এবং ফাইলের বিশৃঙ্খলা সীমিত করতে, Android 10 (API স্তর 29) এবং উচ্চতরকে লক্ষ্য করে এমন অ্যাপগুলিকে ডিফল্টরূপে বাহ্যিক সঞ্চয়স্থানে বা স্কোপড স্টোরেজে স্কোপড অ্যাক্সেস দেওয়া হয়। এই ধরনের অ্যাপগুলির শুধুমাত্র এক্সটার্নাল স্টোরেজের অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে অ্যাক্সেস আছে, সেইসাথে অ্যাপটি তৈরি করা নির্দিষ্ট ধরনের মিডিয়াতে।
স্কোপড স্টোরেজ ব্যবহার করুন যদি না আপনার অ্যাপের এমন একটি ফাইলে অ্যাক্সেসের প্রয়োজন হয় যা একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরির বাইরে এবং MediaStore
APIগুলি অ্যাক্সেস করতে পারে এমন একটি ডিরেক্টরির বাইরে সঞ্চিত থাকে। আপনি যদি বাহ্যিক সঞ্চয়স্থানে অ্যাপ-নির্দিষ্ট ফাইলগুলি সঞ্চয় করেন, তাহলে আপনি এই ফাইলগুলিকে বাহ্যিক সঞ্চয়স্থানে একটি অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে রেখে স্কোপড স্টোরেজ গ্রহণ করা সহজ করতে পারেন৷ এইভাবে, স্কোপড স্টোরেজ সক্ষম করা থাকলে আপনার অ্যাপ এই ফাইলগুলিতে অ্যাক্সেস বজায় রাখে।
স্কোপড স্টোরেজের জন্য আপনার অ্যাপ প্রস্তুত করতে, স্টোরেজ ব্যবহারের ক্ষেত্রে এবং সেরা অনুশীলন নির্দেশিকা দেখুন। যদি আপনার অ্যাপের অন্য একটি ব্যবহারের ক্ষেত্রে থাকে যা স্কোপড স্টোরেজ দ্বারা আচ্ছাদিত না হয়, একটি বৈশিষ্ট্য অনুরোধ ফাইল করুন । আপনি স্কোপড স্টোরেজ ব্যবহার করে সাময়িকভাবে অপ্ট-আউট করতে পারেন।
একটি ডিভাইসে ফাইল দেখুন
একটি ডিভাইসে সঞ্চিত ফাইলগুলি দেখতে, অ্যান্ড্রয়েড স্টুডিওর ডিভাইস ফাইল এক্সপ্লোরার ব্যবহার করুন।
অতিরিক্ত সম্পদ
ডেটা স্টোরেজ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন৷