البرمجة

تعذر حفظ الصورة على التخزين الخارجي في تطبيق Android

بناءً على الشيفرة التي قمت بتوفيرها، يبدو أنك تواجه مشكلة في إنشاء دليل جديد على التخزين الخارجي في تطبيق الأندرويد الخاص بك. يعتمد هذا الأمر على الإذن المناسب في ملف التهيئة (Manifest)، والذي ذكرت بالفعل أنك قمت بتضمينه. ومع ذلك، فمن المهم التأكد من أن جهازك الهدف يعمل بإصدار أندرويد يدعم الإذن الخارجي للتخزين.

عند فحص الشيفرة، يظهر أنك تستخدم Environment.getExternalStorageDirectory() للحصول على مسار الذاكرة الخارجية. هذا الأسلوب من الأساليب يعود إلى الإصدارات القديمة من نظام التشغيل الأندرويد، وتم تعطيله أو تقييده في الإصدارات الحديثة.

بدلاً من ذلك، يُفضل الاعتماد على getExternalFilesDir() أو getExternalStoragePublicDirectory() وتحديد النوع المناسب للتخزين (مثل DIRECTORY_PICTURES) حسب احتياجات التطبيق. هذه الطرق توفر وصولًا آمنًا وموجهًا للتخزين الخارجي.

على سبيل المثال، يمكنك تعديل الشيفرة الخاصة بك لتستخدم getExternalFilesDir() كالتالي:

java
File dir = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "Test"); if (!dir.exists() && !dir.mkdirs()) { Log.e(TAG, "Failed to create directory"); return; } String path = dir.getAbsolutePath(); Log.d(TAG, path); // يجب أن يعرض مسارًا صحيحًا هنا File file = new File(dir, "Pic.jpg"); Log.d(TAG, file.getAbsolutePath()); // يجب أيضًا أن يعرض مسارًا صحيحًا هنا // استخدم FileOutputStream لكتابة الصورة إلى الملف try { FileOutputStream outStream = new FileOutputStream(file); outStream.write(bytes); outStream.close(); Log.d(TAG, "onPictureTaken - wrote bytes: " + bytes.length); } catch (FileNotFoundException e) { e.printStackTrace(); Log.e(TAG, "File not found exception: " + e.getMessage()); } catch (IOException e) { e.printStackTrace(); Log.e(TAG, "IOException: " + e.getMessage()); }

من المهم أيضًا التأكد من أن التطبيق الخاص بك لديه الإذن الصحيح في وقت التشغيل للوصول إلى التخزين الخارجي. قد تحتاج أيضًا إلى طلب الإذن في وقت التشغيل باستخدام requestPermissions() في نشاط الخاص بك.

من خلال تنفيذ هذه التغييرات والتأكد من أن جهازك الهدف يدعم الإذن الخارجي للتخزين، يجب أن تتمكن من حفظ الصورة بنجاح في التخزين الخارجي على الهاتف الخاص بك.

المزيد من المعلومات

بعد تطبيق التغييرات المقترحة وتأكد من وجود الإذن المناسب في ملف التهيئة وأثناء تشغيل التطبيق، قد تحتاج أيضًا إلى مراقبة سجل الأخطاء (Logcat) للتأكد من عدم وجود أي رسائل خطأ أثناء تنفيذ عملية الكتابة على الذاكرة الخارجية.

ومن الجدير بالذكر أن استخدام mkdirs() ينشئ جميع الدلائل المفقودة في المسار المحدد، بينما mkdir() ينشئ فقط الدليل النهائي. لذا، إذا كنت ترغب في إنشاء تسلسل من الدلائل، فإن استخدام mkdirs() هو الطريق الصحيح.

يجب أيضًا التأكد من أن لديك أذونات الكتابة إلى التخزين الخارجي في ملف التهيئة الخاص بك، مما قد يكون مثل:

xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

ومع ذلك، يُفضل الآن استخدام نطاقات الأذونات الأكثر تحديدًا مثل WRITE_EXTERNAL_STORAGE في حالات الضرورة فقط، واستخدام طرق تخزين البيانات الخارجية المتاحة من خلال الوظائف المقدمة في Android framework.

في الختام، يجب أن تكون قادرًا الآن على حفظ الصورة بنجاح على التخزين الخارجي لجهاز الأندرويد الخاص بك باستخدام الشيفرة المحدثة وضمان الإذن الصحيح وتحديد المسار المناسب. إذا كنت ما زلت تواجه مشكلة معينة، فقد تحتاج إلى فحص الأسباب الأخرى المحتملة مثل الأخطاء الأخرى في الشيفرة أو قيود الأمان في إصدار Android الخاص بك.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر