اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم ورحمة الله وبركاتة
 قمت بعمل تطبيق بالجافا للاندرويد ، ومن محتوياته كود لحذف عدة ملفات بعظها في التخزين الداخلي واخرى في التخزين الخارجي.
وهذا هو الكود:
اولاً : قمت بعمل دالة للحذف:

public void funDelete(File folder){
  try{
    File[] cont_file=folder.listFiles();
    for(File file : cont_file){
      file.delete();
    }
  }
  catch(Exception ex){
    //Toast.makeText(c,ex.getMessage(),1).show();
  }
}


ثانياً : استدعاء دالة الحذف:

//كل المسارات
String [] paths={"/storage/emulated/0/SHAREit/download/videos/.caches"
  ,"/storage/sdcard1/SHAREit/download/videos/.caches"
  ,"/storage/sdcard1/Android/data/com.lenovo.anyshare.gps/files/SHAREit/download/videos/.caches"};
for(String path : paths){
  try{
    File folder=new File(path);
    if(folder.exists())
      funDelete(folder);
  }
  catch(Exception ex){
    Toast.makeText(c,ex.getMessage(),1).show();
  }

وقمت بعمل الاكواد الاخرى التي يتطلبها التطبيق كالصلاحيات التي في ملف androidmanifest.xml

<!-- قراءة محتويات بطاقة SD -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<!-- تعديل محتويات بطاقة SD أو حذفها -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

وكذلك الكود  الذي يطلب من المستخدم باعطاء الصلاحية لهذا التطبيق او رفضها والكود كالاتي :

//دالة للتأكد من اصدار الاندرويد
protected boolean shouldAskPermissions() {
  return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
}

 

// @TargetApi(23)
//دالة اعطاء الصلاحيات او رفضها
protected void askPermissions() {
  String[] permissions = {
    "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"
  };
  int requestCode = 200;
  requestPermissions(permissions, requestCode);
}

حيث يتم استدعاء الدالتين كالاتي :

if (shouldAskPermissions()) askPermissions();

المشكلة التي حصلت لدي انه فقط يتم حذف الملفات التي في التخزين الداخلي 

"/storage/emulated/0/SHAREit/download/videos/.caches"

اما التي في التخزين الخارجي فانه لا يتم حذفها

,"/storage/sdcard1/SHAREit/download/videos/.caches"
,"/storage/sdcard1/Android/data/com.lenovo.anyshare.gps/files/SHAREit/download/videos/.caches"

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

للعلم انا اتعامل مع Android X في البرمجة

تم التعديل في بواسطة Hassan Hedr
تنسيق الشيفرة

Recommended Posts

  • 0
نشر

بما أنك تحاول إدارة ملفات مشتركة لا يمكلها تطبيقك سيحتاج التطبيق للصلاحية التالية: 

android.permission.MANAGE_EXTERNAL_STORAGE

يمكنك التحقق من سماح المستخدم لتلك الصلاحية باستدعاء التابع التالي

Environment.isExternalStorageManager()

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...