من Android 10 فصاعدًا ، غيرت Google طريقة التعامل مع التخزين. أصبح هذا إلزاميًا لجميع التطبيقات التي تستهدف Android 11 وما فوق. تم تنفيذ التغييرات مع مراعاة الخصوصية ، مما يمنع المستخدمين من إجبارهم على منح حق الوصول إلى كل ملف على أجهزتهم. سيخبرك هذا البرنامج التعليمي للتخزين المحدد النطاق بما تحتاج إلى معرفته.
برنامج تعليمي للتخزين المحدد النطاق: إصدار ملاحظات المنحدرات
باستخدام التخزين المحدد النطاق ، سيحتاج المستخدمون إلى منح الإذن في أي وقت يحاول التطبيق الوصول إلى ملف لم يقم بإنشائه. يتم تشجيع المطورين أيضًا على وضع الملفات في مجلدات محددة ، وبالتالي تقليل مقدار الفوضى وعدم التنظيم. سيتم حذف أي ملفات خارج هذه المجلدات بمجرد إزالة التطبيق.
أنظر أيضا: دليل لتطوير تطبيقات Android في 5 خطوات سهلة
يتم منح التخزين المحدد النطاق افتراضيًا ويعتمد على نوع الملف الذي يتم تخزينه (يتم تنظيمها على أنها “مجموعات”). يتم منح التطبيقات فقط إمكانية الوصول إلى أنواع التخزين التي تستخدمها بالفعل.
من الناحية العملية ، هذا يعني أن المطورين لم يعودوا بحاجة إلى استخدام إذن WRITE_EXTERNAL_STORAGE ، لأن هذا ليس له أي تأثير على وصول التطبيق إلى التخزين. بعض الأشياء تصبح أسهل ، والبعض الآخر يصبح أكثر تعقيدًا. اقرأ بقية البرنامج التعليمي المخصص للتخزين لمعرفة ما تحتاج إلى معرفته.
الوصول إلى مساحة التخزين الخاصة بالتطبيق
لا تحتاج التطبيقات إلى أذونات خاصة للوصول إلى مساحة التخزين المحددة ولا توجد تغييرات في طريقة الحفظ في وحدة التخزين الداخلية. ومع ذلك ، هناك بعض الأشياء التي يجب مراعاتها عند استخدام التخزين الخاص بالتطبيق ، والتي سنغطيها في هذا البرنامج التعليمي للتخزين المحدد النطاق.
تنسب إليه: إدغار سرفانتس / سلطة أندرويد
هناك موقعان خاصان بالتطبيقات في وحدة التخزين الخارجية والتي يجب استخدامها بشكل أساسي عندما تكون وحدة التخزين الداخلية غير كافية. هذه مخصصة للملفات الدائمة للتطبيق والملفات المخزنة مؤقتًا ، على التوالي.
للوصول إلى هذه المواقع ، يجب أن يتحقق التطبيق أولاً من توفر التخزين (التوفر مضمون لوحدة التخزين الداخلية). استعلم عن حالة وحدة التخزين باستخدام Environment.getExternalStorageStage (). إذا تم إرجاع MEDIA_MOUNTED ، يمكنك قراءة الملفات وكتابتها على وحدة التخزين الخارجية.
بعد ذلك ، ستحتاج إلى اختيار موقع التخزين الفعلي. قد يعني هذا الاختيار بين الذاكرة الداخلية مقابل بطاقة SD ، على سبيل المثال. قم باستدعاء ContextCompat.getExternalFilesDir (). يعتبر العنصر الأول في المصفوفة المرتجعة خيار التخزين الخارجي “الأساسي” ، ويجب استخدامه في معظم الحالات.
للوصول إلى الملفات الخاصة بالتطبيق من وحدة التخزين الخارجية ، اتصل بـ getExternalFilesDir ().
هناك عدد من الدلائل الجاهزة والمحددة الغرض منها المساعدة في التخزين المنطقي للملفات. وتشمل هذه:
DIRECTORY_ALARMS
الدليل_الكتب الصوتية
DIRECTORY_DCIM
DIRECTORY_DOCUMENTS
DIRECTORY_DOWNLOADS
DIRECTORY_MOVIES
DIRECTORY_MUSIC
DIRECTORY_NOTIFICATIONS
DIRECTORY_PICTURES
DIRECTORY_PODCASTS
DIRECTORY_RINGTONES
DIRECTORY_SCREENSHOTS
استخدم هذه أو مرر “فارغ” إذا كنت تريد الوصول إلى المجال الجذر للدليل الخاص بالتطبيق.
لإضافة ملفات خاصة بالتطبيق إلى ذاكرة التخزين المؤقت في وحدة التخزين الخارجية ، استخدم externalCacheDir. لإزالتها ، استخدم حذف ().
الوصول إلى الملفات الأخرى
أخيرًا ، لإنهاء هذا البرنامج التعليمي للتخزين المحدد النطاق ، يجب أن نفكر في كيفية الوصول إلى الملفات التي تتم مشاركتها عبر النظام وكتابتها.
يجب أن تختار التطبيقات بين “التخزين الخاص بالتطبيق” أو “التخزين المشترك”. يتم استخدام الأخير عندما تريد مشاركة الملفات مع تطبيقات أخرى ، مثل الصور أو المستندات. يجب على المطورين الذين يرغبون في الوصول إلى الملفات خارج الدليل الخاص بالتطبيق استخدام إذن MANGE_EXTERNAL_STORAGE. يمكنك أيضًا استخدام إجراء النية ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION لإرسال صفحة الإعدادات للمستخدمين حيث يمكنهم تمكين الوصول لتطبيقك.
يمنح MANAGE_EXTERNAL_STORAGE الوصول إلى محتويات جدول MediaStore.Files والدليل الجذر لمحرك USB OTG وبطاقة SD وجميع الأدلة الداخلية (باستثناء sdcard / Android والأدلة الفرعية الخاصة به). يتضمن هذا التقييد الدلائل الخاصة بالتطبيقات الخاصة بالتطبيقات الأخرى ، حيث توجد هذه الأدلة في sdcard / Android / data.
لم يعد بإمكاننا استخدام واجهات برمجة تطبيقات الملفات للوصول مباشرة إلى الملفات. بدلاً من ذلك ، يجب أن نستخدم Storage Access Framework لتحديد الملفات والمجلدات و URI لملفات الوسائط. للوصول إلى صورة ، على سبيل المثال ، يجب علينا الآن استخدام URIs بدلاً من MediaStore.Images.Media.DATA. كانت هذه هي الممارسة الموصى بها بالفعل ، ولكنها الآن إلزامية.
أنظر أيضا: مقدمة عن Google Play Console للمطورين
للوصول إلى الملفات البسيطة باستخدام Storage Access Framework ، هناك ثلاثة إجراءات رئيسية:
ACTION_OPEN_DOCUMENT
ACTION_OPEN_DOCUMENT_TREE
ACTION_CREATE_DOCUMENT
هذه إلى حد ما تفسر نفسها بنفسها. لعرض الصور ، نحصل أولاً على معرف الصورة باستخدام MediaStore.Images.Media._ID ثم نبني Uri باستخدام ContentUris.withAppendedID. هذه عملية أطول بكثير مما كانت عليه من قبل ، وبالتأكيد تزيد من منحنى التعلم لما يمكن أن يكون عملية بسيطة نسبيًا.
هذا يختتم هذا البرنامج التعليمي التخزين النطاق! ما رأيك في نطاق التخزين؟ هل هو تحديث أمني ضروري أم عقبة محبطة للمطورين؟
لمزيد من أخبار المطورين والميزات والبرامج التعليمية من Android Authority ، لا تفوت الاشتراك في النشرة الإخبارية الشهرية أدناه!