2013-04-08 4 views
2

Я относительно новичок в Android и не могу получить эту работу.Удалить все фотографии на Android

До сих пор у меня есть приложение, которое имеет одну большую круговую красную кнопку. Когда пользователь нажимает на это, он выполняет операцию (на данный момент он отображает «Hello World»).

Вместо этого, я хочу, чтобы все фотографии были удалены на устройстве Android. (Да, это странно, что нужно сделать, я знаю)

Мои вопросы:

  1. Возможно ли это? У меня были проблемы с его работой, и я не могу найти приложения, которые делали это раньше.

  2. Единственное устройство для Android, которое у меня есть, - это планшет Nexus 7. Я бы хотел, чтобы он работал как на Android-телефонах, так и на планшетах. Возможно ли это, так как я понимаю, что их структуры каталогов различаются?

+0

Привет, мир, чтобы удалить все фотографии ... Отличное приложение с отличной функциональностью! –

+0

Если вы обманывающий супруг, которого нужно поймать, это хорошая функциональность. Если он удалит все SMS-сообщения, Tiger Woods понравится приложение. Легче использовать выбросы сотовых телефонов, но читеры - нет. –

+0

Ха-ха боится, не нужно никому обманывать минуту! :) Могли бы сделать тигр огромную пользу! – themenace92

ответ

3

Да, вы можете удалить Изображения, но я не подозреваю, что вы можете сделать их все сразу.

Я рекомендую вам запросить Mediastore, чтобы получить _ID всех изображений, а затем прокрутить список и удалить их. Вот пример кода, но я уверен, что его можно оптимизировать. Этот код является агностиком файловой системы, поэтому он должен работать в любом месте.

код, чтобы получить список всех элементов на Mediastore.Images

List<Long> mediaStoreIds = new ArrayList<Long>(); 

    Cursor c = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{BaseColumns._ID}, null, null, null); 

    if (c != null) { 
     final int id = c.getColumnIndexOrThrow(BaseColumns._ID); 

     c.moveToFirst(); 
     while (!c.isAfterLast()) { 
      Long mediaStoreId = c.getLong(id); 

      mediaStoreIds.add(mediaStoreId); 
      c.moveToNext(); 
     } 
     c.close(); 
    } 

Затем удалить, а вы могли бы сделать это право в первоначальном цикле или петли через ArrayList, но вот как удалить:

context.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=?", new String[]{Long.toString(mediaStoreIds.get(i))}); 
+0

Очень полезно, спасибо! – themenace92