استفاده از Storage در اندروید 11

نویسنده : ناصر خالدی بروز شده در : 4 ماه 22 روز قبل آخرین مطالعه 8 دقیقه 47 ثانیه قبل دسته ها : اندروید

اندروید 11 (API level 30) علاوه بر تقویت پلتفرم, به دنبال بهتر کردن حفاظت از برنامه ها و داده های ذخیره شده کاربر در حافظه می باشد. در این نسخه چند پیشرفت معرفی شده است مانند دسترسی به مسیر خام فایل برای رسانه, عملیات ویرایش دسته ای برای رسانه ها و بروزرسانی UI برای فریم ورک دسترسی به حافظه.

این نسخه همچنین بهبود در ذخیره سازی یا همان محدوده ذخیره سازی را معرفی میکند تا توسعه دهندگان بعد از کوچ کردن به این نوع مدل از ذخیره سازی, بتوانند به راحتی نیاز های خود را برطرف کنند.

 

اجرای محدوده ذخیره سازی

برنامه های که در اندروید 11 اجرا میشوند و اندروید 10 را هدف قرار داده اند همچنان می توانند از اتریبیوت requestLegacyExternalStorage استفاده کنند. این flag به برنامه ها این امکان را می دهد تا به طور موقت از تغییرات مرتبط با فضای ذخیره سازی مانند دسترسی به دایرکتوری های مختلف و انواع مختلف فایل های رسانه ای انصراف دهند, بعد از آن که برنامه خود را ارتقا دهید و اندروید 11 را هدف قرار دهید سیستم این اتریبیوت را نادیده میگرد.

 

سازگاری با اندروید 10 را حفظ کنید

زمانی که اپلیکیشن شما از در اندروید 10 اجرا می شود و از محدوده ذخیره سازی انصراف داده است پیشنهاد میشود تا در فایل androidmanifest خود اتریبیوت requestLegacyExternalStorage برابر با true قرار بدهید, به این شکل برنامه ی شما می توانند به آن گونه ای که انتظار دارید در اندروید 10 رفتار کند.

 

انتقال داده ها به فهرستهایی که هنگام استفاده از فضای ذخیره سازی قابل مشاهده هستند

اگر اپلیکیشن شما از نسخه ی قدیمی ذخیره سازی استفاده میکند و قبلا اندروید 10 یا پایین تر را هدف قرار داده است, ممکن است شما بتوانید داده ها را در یک مسیری ذخیره سازی کنید اما برنامه شما نمی تواند زمانی که مدل محدود ذخیره سازی فعال باشد به آن اطلاعات دسترسی داشته باشد, قبلا از هدف قرار دادن اندروید 11, داده ها را به یک دایرکتوری که با فضای ذخیره سازی سازگار, سازگار است منتقل کنید.

 

تست محدوده ذخیره سازی

برای فعال کردن محدوده ذخیره سازی, بدون در نظر داشتن نسخه SDK هدف قرار داده شده و مقادیر flag ها در AndroidManifest پروژه, flag های زیر را برای سازی گاری اپلیکیشن فعال کنید :
  • DEFAULT_SCOPED_STORAGE           برای تمامی اپلیکیشن ها به صورت پیش فرض فعال است.
  • FORCE_ENABLE_SCOPED_STORAGE  برای تمامی اپلیکیشن ها به صورت پیش فرض غیرفعال است.
برای غیرفعال کردن محدوده ذخیره سازی و استفاده از مدل ذخیره سازی قدیمی ، هر دو پرچم را تنظیم نکنید.

 

مدیریت حافظه دستگاه

در اندروید 11 شروع شده است, برنامه های که از محدوده ذخیره سازی استفاده میکنند فقط می توانند به فایل های کش شده برنامه ی خود دسترسی داشته باشند. اگر برنامه ی شما نیاز دارد تا حافظه دستگاه را مدیریت کند, دستورالعمل های مربوط به نحوه query زدن در فضا خالی را دنبال کنید.

  • فضای خالی را با استناد action اینتنت ACTION_MANAGE_STORAGE بررسی کنید.
  • اگر در دستگاه فضای خالی کافی وجود نداشته باشد, از کاربر برای حذف حافظه پنهان درخواست کنید, برای انجام این درخواست با action اینتنت ACTION_CLEAR_APP_CACHE استناد کنید.

نکته : action اینتنت ACTION_CLEAR_APP_CACHE می تواند به طور قابل توجهی بر عمر باتری دستگاه تأثیر بگذارد و ممکن است تعداد زیادی پرونده را از دستگاه حذف کند.

 

دایرکتوری مخصوص اپلیکیشن در حافظه

در اندروید 11 شروع شده است که برنامه ها نمی توانند دایرکتوری های ویژه خود را ایجاد کنند, برای دسترسی به دایرکتوری که سیستم برای برنامه ی شما فراهم کرده است باید متد getExternalFilesDirs() را فراخوانی کنید.

 

دسترسی به فایل رسانه ای

برای این که به راحتی به رسانه ها دسترسی داشته باشید و امنیت کاربر را حفظ کنید, اندروید 11 چندین متد برای راحتتر کردن مدیریت گروهی فایل های رسانه ای فراهم کرده است. که بزودی درباره این راه ها و نحوه استفاده از آن صحبت خواهیم کرد.

 

دسترسی به فایل ها با استفاده از مسیر مستقیم و کتابخانه های بومی

برای کمک به برنامه شما در راحت تر کار کردن با کتابخانه های رسانه شخص ثالث, اندروید 11 به شما اجازه می دهد تا از API های دیگر به غیر از MediaStore API برای دسترسی به مسیر مستقیم فایل های رسانه ای فضای ذخیره سازی مشترک استفاده کنید.

این API شامل موارد زیر هستند :

  • API مربوط به File
  • کتابخانه های بومی مانند fopen

 

دسترسی به داده های برنامه های دیگر

برای حفظ حریم خصوصی کاربر در دستگاه های که از اندروید 11 یا بالاتر استفاده میکنند, سیستم برنامه شما را برای دسترسی به دایرکتوری های خصوصی دیگر برنامه محدود میکند.

  • دسترسی به دایرکتوری های داده در حافظه داخلی

اندروید 9 شروع به محدود کردن برنامه های که میتوانند فایل های را به صورت عمومی به طوری که در دسترسی دیگر برنامه ها باشد در داخل حافظه داخلی ایجاد کند, کرده است. برنامه هایی که اندروید 9 یا بالاتر را هدف قرار می دهند نمی توانند پرونده های موجود در فهرست داده هایشان را در دسترس سایر اپلیکیشن ها قرار دهند.

اما اندروید 11 با وجود این محدودیت ها گسترش می یابد. اگر اپلیکیشن شما اندروید 11 را هدف قرار داده است باید بدانید که نمی تواند به فایل های که در دایرکتوری های خصوصی دیگر اپلیکیشن ها هستند دسترسی داشته باشد. حتی اگر دیگر برنامه ها هدفشان اندروید 8 یا پایین تر باشد و دسترسی به داده هایشان را به صورتی عمومی کرده باشند.

 

  • دسترسی به دایرکتوری های خاص برنامه در حافظه خارجی

در اندروید 11, برنامه ها نمی توانند دیگر به فایل های اختصاصی دیگر برنامه ها که در دایرکتوری مخصوص خودشان است دسترسی داشته باشند.

 

محدودیت های دسترسی به سند

برای دادن فرصت تست به توسعه دهندگان, تغییرات پایین مربوط به Storage Access Framework (SAF) می باشد و زمانی تاثیر گذار است که شما اندروید 11 یا بالاتر را هدف قرار بدهید.

 

دسترسی به دایرکتوری ها

شما دیگر نمی توانید از طریق action اینتنت ACTION_OPEN_DOCUMENT_TREE برای دسترسی به دایرکتوری های زیر استفاده کنید:

  • روت دایرکتوری حافظه داخلی
  • روت هر SD کارتی که قابل اعتماد باشد.
  • دایرکتوری دانلود

 

دسترسی به فایل ها

شما دیگر نمیتواند در اندروید 11 از action اینتنت ACTION_OPEN_DOCUMENT_TREE یا ACTION_OPEN_DOCUMENT برای دسترسی فایل های شخصی که در زیر دایرکتوری های آن مشخص شده است استفاده کنید :

  • Android/data/ و تمامی زیر پوشه های آن
  • Android/obb/ وتمامی زیر پوشه های آن

 

تست تغییرات

برای تست رفتار های تغییر داده شده, مراحل زیر رو انجام دهید:

  • action اینتنت ACTION_OPEN_DOCUMENT را برای دایرکتوری های Android/data/ و  Android/obb/ درخواست کنید اما هیچ چیزی ظاهر نمی شود.
  • یکی از موارد زیر را انجام بدهید:
  1. flag سازگاری RESTRICT_STORAGE_ACCESS_FRAMEWORK را برای اپلیکیشن فعال کنید.
  2. اندروید 11 یا بالاتر را هدف قرار دهید.
  • action اینتنت ACTION_OPEN_DOCUMENT_TREE را درخواست کنید. بعد از بررسی متوجه خواهید شد که دایرکتوری Download ظاهر میشود و دکمه اقدام مرتبط با دایرکتوری به رنگ خاکستری درآمده است.

 

 

مجوز ها

در اندروید 11 تغییراتی در رابطه با مجوز های دسترسی به حافظه داده شده است که در ادامه به آن می پردازیم.

 

هدف قرار دادن هر نسخه ای از اندروید

تغییرات زیر در اندروید 11 اعمال میشود, صرف نظر از نسخه ی SDK ای که مورد هدف قرار داده اید.

  • تغییر نام مجوز ران تایم (زمانی که برنامه در حال اجرا باشد و از کاربر درخواست اعطای مجوز داریم)  Storage به File & Media (فایل و رسانه ها)
  • اگر برنامه شما از قابلیت محدوده ذخیره سازی استفاده نمیکند, و درخواست مجوز READ_EXTERNAL_STORAGE کنید, کاربران دیالوگ متفاوتی در اندروید 10 مشاهده میکنند, در این دیالوگ مشخص میشود که برنامه شما مجوز درخواست دسترسی به فایل ها و رسانه های درون حافظه را دارد مانند تصویر زیر :

کاربر می تواند ببیند که به چه برنامه های مجوز READ_EXTERNAL_STORAGE در سیستم داده شده است. از صفحه تنظیمات > حریم خصوصی > مدیریت مجوز ها > فایل ها و رسانه ها. هر برنامه ای که مجوز به آن داده شده باشد و در زیر بخش مجاز به دسترسی به تمام فایل ها قرار میگیرد. اگر اپلیکیشن شما اندروید 11 را هدف قرار داده باشد باید در نظر بگیرید که مجوز دسترسی به تمام فایل ها فقط برای خواندن آن فایل ها می باشد. در رابطه با دریافت مجوز کامل برای نوشتن و خواندن فایل در آموزشی بعدی در رابطه آن صحبت خواهیم کرد.

 

هدف قرار دادن اندروید 11

اگر پروژه شما اندروید 11 را هدف قرار داده باشد با استفاده از مجوز های WRITE_EXTERNAL_STORAGE و WRITE_MEDIA_STORAGE دیگر نمیتواند هیچ دسترسی اضافه ای داشته باشد.

در نظر داشته باشید, در تلفن هایی که نسخه اندروید آن ها 10 یا بالاتر باشد, اپلیکیشن شما میتواند بدون نیاز به درخواست مجوز در برخی از کار ها مانند ذخیره فایل ها در دایرکتوری Download کمک کند. در مقاله ای دیگر در رابطه با درخواست مجوز های ضروری را توضیح خواهیم داد.

 

دسترسی به تمام فایل ها

اکثر برنامه هایی که به دسترسی ذخیره سازی نیاز دارند می توانند بهترین روش ها را برای به اشتراک گذاری فایل های رسانه ای و غیر رسانه ای را دنبال کنند. با این حال ، برخی از برنامه ها دارای یک هسته استفاده اصلی هستند که به دسترسی گسترده پرونده ها در یک دستگاه نیاز دارد اما نمیتواند با استفاده از بهترین روش های ذخیره سازی مناسب برای حریم خصوصی ، چنین کارایی را انجام دهد. اندروید برای این شرایط دسترسی ویژه برنامه ای فراهم می کند به نام All files access.
منتظر نظرات شما برای این مقاله هستیم.

در این مقاله به بررسی کامل تغییرات حافظه و افزایش ضریب امنیتی حریم خصوصی, نحوه دسترسی به فایل ها و استفاده از آن در اندروید 11 آمده است.


قیمت (تومان)
رایگان
وضعیت
تکمیل شده

مقالات پیشنهادی

اندروید

اندروید

اندروید یک سیستم عامل می باشد که توسط گوگل توسعه داده میشود, این سیستم عامل بر پایه نسخه ی اصلاح شده ی هسته ی لینوکس و دیگر نرم افزار های متن باز طراحی شده است و ...

آخرین بروزرسانی 6 ماه 20 روز قبل

هوش مصنوعی

هوش مصنوعی

هوش مصنوعی یا هوش ماشینی, به هوشمندی نشان داده شده توسط ماشین در شرایط مختلف گفته میشود که مقابل هوش طبیعی در انسان ها قرار دارد که ...

آخرین بروزرسانی 6 ماه 22 روز قبل

نود جی اس

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...

آخرین بروزرسانی 6 ماه 21 روز قبل

پی اچ پی - PHP

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...

آخرین بروزرسانی 6 ماه 21 روز قبل

سوالات و گفتگوها

جالبه توی نسخه ۱۱ تغییرات زیادی برای حافظه در نظر گرفته شده

logo-samandehi
تماس با ما

می توانید از طریق اطلاعات زیر با ما در ارتباط باشید.

درباره ما

سایت سون کلونر به تازگی شروع به کار کرده است و امید می رود تا بتواند پایگاه وسعی از آموزش های رایگان را در دسترس فارسی زبانان قرار دهد.