القائمة الرئيسية

الصفحات

استعادة الصور المحذوفة من Android بدون Root؟ تعرف على File Recovery for Android

فقدت صورًا مهمة من هاتفك؟ هذا التطبيق يحاول استعادتها بدون Root

استعادة الصور المحذوفة من Android بدون Root؟ تعرف على File Recovery for Android

هل سبق أن حذفت صورًا أو فيديوهات مهمة من هاتف Android، وبعد عدة أيام اكتشفت أنك تحتاج إليها؟

المشكلة أن البحث عن تطبيق لاستعادة الملفات المحذوفة على متجر التطبيقات قد يكون تجربة محبطة.


قد تجد تطبيقًا يخبرك:

"وجدنا 4036 صورة محذوفة!"

فتفرح وتعتقد أنك ستستعيد كل هذه الصور...

لكن عندما تبدأ في مراجعة النتائج، تكتشف أن جزءًا كبيرًا منها عبارة عن صور مصغرة أو ملفات Cache أو ملفات مخفية كانت موجودة على هاتفك أصلًا ولم تُحذف.

وهنا تبدأ المشكلة الحقيقية:

هل التطبيق استعاد صورك المحذوفة فعلًا؟

أم أنه فقط جمع كل الملفات التي تشبه الصور وعرضها لك على أنها "ملفات محذوفة"؟

من هذه الفكرة ظهر مشروع مفتوح المصدر اسمه:


File Recovery for Android

وهو تطبيق Native مكتوب باستخدام Kotlin وJetpack Compose، ومصمم للبحث عن الصور والفيديوهات والملفات التي لم تعد ظاهرة للمستخدم، ومحاولة استعادتها بدون Root. والأهم من ذلك أن المشروع يضع حدودًا واضحة جدًا لما يستطيع فعله وما لا يستطيع فعله.


المشكلة ليست دائمًا في "حذف" الملف

عندما تحذف صورة من هاتف Android، ليس معنى ذلك بالضرورة أن كل أثر لها اختفى فورًا.

قد تكون الصورة موجودة داخل:

  1. سلة محذوفات النظام.
  2. سلة مهملات تطبيق الصور.
  3. مجلد إعادة التدوير الخاص بمدير الملفات.
  4. ملفات مخفية.
  5. صورة مصغرة Thumbnail.
  6. نسخة موجودة في Cache.
  7. مجلدات تطبيقات مختلفة.

ولهذا، قد تجد تطبيقات استعادة الملفات عددًا ضخمًا من الصور.


لكن هناك فرق جوهري بين:

ملف محذوف فعلًا

و

ملف موجود أصلًا لكنه مخفي عن تطبيق المعرض.

ومشروع File Recovery for Android جعل هذا الفرق جزءًا أساسيًا من تصميمه.


لماذا تم بناء File Recovery for Android؟

الفكرة بدأت من تجربة بسيطة.

تم فقدان صور مهمة من الهاتف، وبعد تجربة تطبيقات الاستعادة الموجودة في المتجر ظهرت أرقام ضخمة جدًا للملفات "المحذوفة".

لكن عند التدقيق، اتضح أن العديد من هذه النتائج كانت عبارة عن ملفات Cache وملفات مخفية موجودة على الجهاز أصلًا.

بدل تضخيم الرقم لإبهار المستخدم، تم بناء أداة تقول الحقيقة بوضوح:

  1. هذا ملف محذوف فعلًا.
  2. وهذا ملف مخفي.
  3. وهذا ملف Cache.

وبذلك يعرف المستخدم بالضبط ماذا وجد التطبيق، بدل أن يرى رقمًا كبيرًا بدون معرفة مصدره.


أهم ميزة في المشروع: الصدق

هذه ليست مجرد عبارة تسويقية.

التطبيق يفصل في واجهته بين مجموعتين مختلفتين:


الملفات المحذوفة Deleted

وهي الملفات التي ما زالت موجودة في أماكن مثل سلة محذوفات النظام أو سلال إعادة التدوير والمواقع التي يتعرف عليها التطبيق كملفات محذوفة.


الملفات المخفية أو المؤقتة Hidden / Cached

وهي ملفات قد تكون غير ظاهرة في تطبيق المعرض، لكنها ليست بالضرورة ملفات تم حذفها.

ويذكر المشروع صراحة أنه لا يجمع المجموعتين في رقم واحد. لذلك إذا ظهرت آلاف الملفات المخفية، فلن يتم تقديمها للمستخدم على أنها آلاف الصور المحذوفة.

وهذا فرق مهم جدًا.


هل يستطيع التطبيق استعادة أي صورة محذوفة؟

لا.

وهنا تأتي واحدة من أكثر النقاط صدقًا في المشروع.

لا يوجد تطبيق Android عادي بدون Root يستطيع استعادة كل شيء تم حذفه نهائيًا من مساحة التخزين الداخلية.

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

بمعنى أبسط:

إذا اختفت الصورة من سلة المحذوفات وتم التخلص من بياناتها فعليًا، فلا توجد عصا سحرية تعيدها بمجرد تثبيت تطبيق.

وهذه الحقيقة مهمة أكثر من أي إعلان يعدك باستعادة "كل شيء".


ما الذي يبحث عنه File Recovery for Android؟

التطبيق لا يكتفي بالبحث في مجلد واحد.

بل يفحص عدة مصادر يمكن أن تحتوي على ملفات قابلة للاستعادة أو بقايا ملفات.

من بينها:

سلة محذوفات النظام

مثل الملفات التي يحتفظ بها MediaStore في سلة المهملات.

ويتعامل المشروع أيضًا مع الملفات التي تحمل أسماء خاصة بالسلة مثل .trashed-*.

سلال إعادة التدوير الخاصة بالشركات المصنعة

المشروع يتعرف على عدد من المواقع الشائعة المرتبطة بسلال المحذوفات، ومنها مسارات مرتبطة بأجهزة:

  • Samsung

  • Huawei

  • Xiaomi

  • ColorOS

  • وبعض مديري الملفات.

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

الصور المصغرة

قد تبقى بعض Thumbnails حتى بعد اختفاء الملف الأصلي.

التطبيق يستطيع العثور على بعض هذه الصور المصغرة، كما يتعامل مع بعض ملفات .thumbdata القديمة باستخدام JPEG carver مخصص.

الملفات المخفية

التطبيق يبحث عن الوسائط الموجودة داخل:

  • المجلدات المخفية.

  • الملفات التي تبدأ بنقطة.

  • مجلدات .nomedia.

  • بعض ملفات WhatsApp.

  • Telegram.

  • بعض بقايا التطبيقات.

  • ملفات .pending-*.

لكن هذه الملفات لا يتم تصنيفها على أنها "محذوفة" لمجرد أنها غير ظاهرة في المعرض.

ملفات Cache

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


التطبيق يفحص وحدات التخزين بالتوازي

من المميزات التقنية الملفتة أن التطبيق لا يعتمد على عملية فحص خطية بسيطة.

بل يقوم بفحص وحدات التخزين المتاحة بشكل متوازٍ، بما في ذلك بطاقة SD عند وجودها.

ووفق أرقام المشروع، تم قياس عملية فحص لحوالي 24 ألف نتيجة خلال أقل من 5 ثوانٍ على جهاز Galaxy Z Fold6 يعمل بنظام Android 16.

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


ماذا لو كان الملف بلا امتداد؟

هذه مشكلة حقيقية في عالم ملفات Android.

قد تجد ملفًا اسمه شيء مثل:

a83f92bc1

ولا تعرف هل هو:

  • صورة؟

  • فيديو؟

  • ملف صوتي؟

  • ملف آخر؟

هنا يستخدم المشروع تقنية تسمى:

Magic Bytes

أي أنه لا يعتمد فقط على اسم الملف أو امتداده، وإنما يقرأ التوقيع الداخلي للملف لتحديد نوعه عندما لا يكون الاسم مفيدًا.

ويدعم المشروع التعرف على أنواع متعددة مثل JPEG وPNG وWebP وHEIC وMP4 وMOV وPDF وZIP وغيرها.


معاينة الصور والفيديوهات قبل الاستعادة

بدل أن تستعيد عشرات أو مئات الملفات ثم تبدأ البحث بينها، يمكنك معاينة النتائج أولًا.

التطبيق يوفر:

  • شبكة صور مصغرة.

  • معاينة للصور.

  • معاينة لإطارات الفيديو.

  • عرض كامل للصورة.

  • تكبير بإصبعين.

  • تحريك الصورة.

  • Double Tap Zoom.

  • التنقل بالسحب بين الملفات.

وهذا يجعل عملية اختيار الملفات أكثر عملية.

فرز وفلترة الملفات

إذا كانت نتائج الفحص كثيرة، لن تحتاج إلى تصفحها عشوائيًا.

يمكنك ترتيب النتائج حسب:

  • الحجم.

  • التاريخ.

  • الاسم.

كما تستطيع تصفية النتائج حسب:

  • نوع الملف.

  • مصدر الملف.

  • الملفات المحذوفة فقط.

وهذا مفيد جدًا عندما يكون الجهاز يحتوي على عدد كبير من النتائج.


الاستعادة لا تعدل الملف الأصلي

هذه نقطة مهمة جدًا.

التطبيق لا يقوم بتحريك الملف الأصلي أو تغيير اسمه.

بدل ذلك، يقوم بعمل نسخة من الملف إلى مجلد الاستعادة.

ويتحقق أولًا من المساحة المتاحة، ثم يكتب النسخة في ملف مؤقت بامتداد .part قبل إكمال عملية النقل، بحيث لا يؤدي إيقاف العملية في المنتصف إلى ترك ملف مستعاد ناقص بشكل غير متوقع.

ويوضع المحتوى المستعاد داخل:

RecoveredFiles/Images

أو:

RecoveredFiles/Videos

أو:

RecoveredFiles/Audio

أو:

RecoveredFiles/Documents

أو:

RecoveredFiles/Other

مع الحفاظ على اسم الملف وتاريخه عندما يكون ذلك ممكنًا.


هل يحتاج File Recovery for Android إلى Root؟

لا.

وهذه من النقاط الأساسية للمشروع.

التطبيق مصمم ليعمل على جهاز Android غير مروّت، ولذلك فهو لا يعتمد على Root للوصول إلى ملفات الجهاز.

لكن يجب فهم حدود هذا الأسلوب:

بدون Root لا يستطيع التطبيق قراءة مساحة التخزين الخام أو البحث عن الكتل التي تم تحريرها فعليًا بالطريقة التي قد تتطلب صلاحيات منخفضة المستوى.

لذلك فهو يعتمد على الاستعادة المنطقية Logical Recovery للملفات التي لا تزال قابلة للوصول.


ماذا عن الخصوصية؟

هنا أيضًا المشروع مختلف عن كثير من تطبيقات الأدوات المجانية.

المشروع لا يحتوي على صلاحية:

INTERNET

وبالتالي لا يستطيع التطبيق إرسال ملفاتك إلى خادم خارجي عبر الشبكة.

ويذكر المشروع أن كل العمليات تتم محليًا على الجهاز، دون Analytics أو Tracking.

وهذا مهم جدًا بالنسبة لتطبيق يتعامل مع صور شخصية وملفات قد تكون حساسة.


لا توجد إعلانات داخل التطبيق

من وصف المشروع، التطبيق مصمم بدون إعلانات.

لا توجد شاشات إعلانية بين كل خطوة.

ولا توجد أرقام ضخمة مصممة فقط لإقناعك بشراء نسخة مدفوعة.

الفكرة الأساسية هي:

افحص جهازك، اعرف ما الذي وجدته، ثم اختر ما تريد استعادته.


ماذا عن صلاحيات التخزين؟

لكي يستطيع التطبيق رؤية سلال المحذوفات ومصادر الملفات التي لا تظهر عادة للتطبيقات العادية، يحتاج في الإصدارات الحديثة إلى صلاحية:

All files access

المعروفة بـ:

MANAGE_EXTERNAL_STORAGE

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

ولهذا فإن المشروع موجه حاليًا بشكل أساسي للتثبيت خارج Google Play، لأن صلاحية All files access تخضع لقيود Google Play على أنواع التطبيقات التي يمكنها استخدامها.


ماذا عن بطاقة SD؟

إذا كان هاتفك يحتوي على بطاقة SD، فالتطبيق يضعها ضمن وحدات التخزين التي يمكن فحصها بالتوازي.

وهذا مهم لأن بعض الملفات المحذوفة قد لا تكون على الذاكرة الداخلية أصلًا.

لكن بالطبع، كما هو الحال مع الذاكرة الداخلية، فإن القدرة على الاستعادة تعتمد على بقاء البيانات أو وجود نسخة في سلة المحذوفات أو Cache أو Thumbnail.


هل يمكن العثور على ملفات WhatsApp وTelegram؟

قد يعثر التطبيق على وسائط موجودة داخل مجلدات مخفية أو ملفات مؤقتة مرتبطة بهذه التطبيقات.

لكن مرة أخرى:

وجود الملف في تلك المجلدات لا يعني تلقائيًا أنه ملف محذوف.

وهذا أحد أسباب أهمية نظام التصنيف الذي يستخدمه المشروع، لأن بعض الملفات قد تكون مجرد بقايا أو نسخ موجودة بالفعل.


ميزة مهمة للمطورين: Pull to Mac

المشروع لا يقتصر على تطبيق Android فقط.

هناك سكربت إضافي اسمه:

pull-to-mac.sh

يسمح للمطور بتوصيل الهاتف بالكمبيوتر عبر USB واستخدام ADB لسحب الملفات المكتشفة مباشرة إلى جهاز Mac أو Linux.

ومن المثير للاهتمام أن هذه الطريقة تستطيع الوصول إلى بعض مجلدات Android/data التي أصبحت مقيدة للتطبيقات على Android 11 والإصدارات الأحدث، لأن العملية تتم عبر ADB من الكمبيوتر وليس عبر تطبيق Android عادي.


المشروع مفتوح المصدر

وهذه نقطة مهمة جدًا.

الكود متاح للعامة على GitHub.

وبالتالي يستطيع المطورون:

  • قراءة طريقة الفحص.

  • مراجعة منطق تصنيف الملفات.

  • معرفة مصادر النتائج.

  • اقتراح تحسينات.

  • إضافة مسارات جديدة لسلال المحذوفات.

  • كتابة اختبارات للقواعد الجديدة.

  • المساهمة في المشروع.

المشروع منشور تحت رخصة MIT.


ماذا يوجد داخل المشروع من الناحية البرمجية؟

للمطورين، المشروع أكثر إثارة للاهتمام من مجرد تطبيق استعادة ملفات.

فهو مبني باستخدام:

Kotlin + Jetpack Compose

مع فصل واضح بين طبقات المشروع.

المشروع يستخدم Clean Architecture داخل Gradle module واحد، وطبقة domain مكتوبة بـ Kotlin خالص ولا تحتوي على اعتماد مباشر على Android.

وتضم البنية أجزاء مثل:

  • Use Cases.

  • Repository interfaces.

  • Scanner.

  • Classifier.

  • File Signature detection.

  • JPEG Carver.

  • MediaStore integration.

  • Recovery repository.

  • Permission handling.

  • Compose UI.

وهذا يجعل المشروع مثالًا جيدًا أيضًا لمن يريد دراسة طريقة بناء أداة Android ذات طابع تقني واضح.


Coroutines وFlow بطريقة مدروسة

الفحص والاستعادة مصممان على شكل Cold Flows.

أي أن العمل يبدأ عند جمع الـ Flow.

وعند إلغاء العملية، يتوقف العمل معها من خلال Structured Concurrency بدل أن تستمر مهام قديمة في الخلفية.

ويذكر المشروع أيضًا أن إلغاء عملية الفحص لا يترك أحداث تقدم متأخرة بعد الإلغاء.

وهذه نقطة مهمة للمطورين الذين يهتمون بإدارة العمليات الثقيلة داخل تطبيقات Compose.


عدد الاختبارات؟

المشروع يحتوي على 35 اختبار JVM وفق المستودع الحالي.

وتغطي الاختبارات عدة أجزاء، منها:

  • اكتشاف توقيع الملفات.

  • تحليل أسماء الملفات المحذوفة.

  • تصنيف المجلدات.

  • ترتيب قواعد التصنيف.

  • JPEG carver.

  • الملفات التي تحتوي على Thumbnails داخل EXIF.

  • الفحص المتوازي.

  • الفلترة والفرز.

  • ViewModel.

  • الإلغاء.

  • تحديد الملفات.

  • عملية الاستعادة.

وهذا يعطي المشروع قيمة إضافية بالنسبة لمن يبحث عن مثال مفتوح المصدر يحتوي على اختبارات فعلية بدل مجرد واجهة وتجربة أولية.


حجم APK صغير جدًا

من المثير للاهتمام أن حجم نسخة Release المذكور في المشروع يبلغ حوالي:

1.4 MB

مقابل حوالي 19 MB لنسخة Debug.

ويرجع المشروع ذلك إلى استخدام R8 وResource Shrinking، مع الاستفادة من تحسينات نسخة Release.

بالنسبة لتطبيق يقوم بعمليات فحص ومعاينة واستعادة للملفات، هذا حجم صغير جدًا.


أداء الفحص

السرعة ليست مجرد رقم تسويقي في المشروع.

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

وفي القياس المذكور على Galaxy Z Fold6:

حوالي 24 ألف نتيجة في أقل من 5 ثوانٍ

مع استهلاك Java heap يقارب 17 MB أثناء تحميل قائمة النتائج.


ماذا يفعل التطبيق عندما يجد آلاف الملفات؟

هنا يظهر الفرق الحقيقي عن تطبيقات الاستعادة التقليدية.

بدل أن يقول:

"وجدنا 24,000 ملف محذوف!"

يقوم المشروع بتصنيف النتائج.

مثلًا:

Deleted

ثم:

Hidden

ثم:

App Cache

ثم:

Thumbnail

وبذلك تستطيع معرفة ما الذي عثر عليه التطبيق فعلًا.

وهذا يجعل الرقم الكبير مفهومًا بدل أن يكون مجرد وسيلة لإبهار المستخدم.


هل كل ما يظهر في النتائج قابل للاستعادة؟

لا.

بعض النتائج قد تكون:

  • صورًا أصلية موجودة في سلة محذوفات.

  • صورًا مصغرة منخفضة الدقة.

  • ملفات Cache.

  • ملفات مخفية.

  • بيانات لا يمكن فتحها بسبب التشفير أو طبيعة الملف.

  • بقايا غير كاملة.

ويذكر المشروع مثلًا أن بعض سلال Gallery لدى بعض الشركات قد تكون مشفرة، وفي هذه الحالة قد يظهر الملف لكن قد لا يتمكن التطبيق من فتحه بالشكل المعتاد.


ما حدود التطبيق؟

من المهم جدًا قراءة هذه النقطة قبل الاعتماد على أي أداة لاستعادة البيانات.

المشروع يوضح أن:

الملفات التي تم حذفها نهائيًا من سلة المحذوفات، أو التي حذفتها التطبيقات بطريقة تتجاوز السلة، قد تكون غير قابلة للاستعادة على هاتف غير مروّت.

كما أن إعادة ضبط المصنع تجعل استعادة البيانات القديمة غير ممكنة وفق حدود هذا النوع من الأدوات.

كذلك فإن Android/data وAndroid/obb أصبحت مناطق مقيدة للتطبيقات على Android 11+، ولهذا يوفر المشروع سكربت ADB للكمبيوتر للتعامل مع بعض هذه الحالات.


قبل أن تستخدم أي برنامج لاستعادة الملفات

هناك خطوة بسيطة قد توفر عليك كل شيء.

تحقق أولًا من:

سلة محذوفات تطبيق الصور

Google Photos Trash

Files by Google Trash

Samsung My Files Trash

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


لماذا أعتقد أن فكرة المشروع مختلفة؟

لأن المشكلة ليست فقط في "استعادة الملفات".

المشكلة في أن بعض الأدوات تجعل المستخدم يعتقد أن:

كل صورة وجدتها = صورة محذوفة.

وهذا غير صحيح.

File Recovery for Android يتعامل مع المشكلة بشكل مختلف:

يبحث عن الملفات.

ثم:

يصنف مصدرها.

ثم:

يخبرك ما إذا كانت Deleted أو Hidden أو Cached.

ثم:

يترك لك قرار الاستعادة.

وهذا النموذج أكثر شفافية بكثير.


هل يستحق التجربة؟

إذا فقدت صورًا أو فيديوهات مهمة مؤخرًا، وكانت لا تزال هناك إمكانية لوجودها في سلة محذوفات الجهاز أو إحدى سلال الشركات المصنعة أو كنسخة مخفية أو Thumbnail أو Cache، فقد يكون المشروع أداة مفيدة للبحث عنها.

لكن يجب أن تدخل إليه بتوقعات واقعية:

لن يعيد لك ملفات تم محوها نهائيًا من التخزين الداخلي لمجرد أنك ضغطت Scan.

وهذه ليست مشكلة في التطبيق.

بل هي ببساطة حدود ما يمكن لتطبيق Android بدون Root الوصول إليه على الأجهزة الحديثة.


الخلاصة

File Recovery for Android ليس مجرد تطبيق آخر يخبرك بأنه وجد آلاف الصور المحذوفة.

فكرته الأساسية مختلفة:

كن صادقًا مع المستخدم.

إذا وجدت صورة في سلة المحذوفات، قل إنها Deleted.

إذا وجدتها في Cache، قل إنها Cached.

إذا وجدتها في مجلد مخفي، قل إنها Hidden.

وإذا لم تعد البيانات موجودة فعليًا، لا تدّعِ أنك تستطيع استعادتها.

هذا ما يجعل المشروع مثيرًا للاهتمام، ليس فقط كمستخدم فقد بعض ملفاته، وإنما أيضًا كمطور يريد دراسة مشروع Android مفتوح المصدر مبني باستخدام Kotlin وJetpack Compose وClean Architecture وCoroutines وFlow، مع نظام تصنيف وفحص واختبارات فعلية.

والأهم أن المشروع لا يحتاج إلى Root، ولا يطلب صلاحية Internet، ولا يستخدم الإعلانات أو التتبع، وكل العمليات تتم على الجهاز نفسه.


مشروع يستحق المتابعة

المشروع متاح على GitHub ومفتوح المصدر تحت رخصة MIT، والمساهمات مرحب بها، خصوصًا فيما يتعلق بإضافة مسارات سلال المحذوفات الخاصة بالشركات المصنعة التي لم تتم تغطيتها بعد.

GitHub

أنت الان في اول موضوع

تعليقات