2013-04-08 125 views
2

我對Android比較陌生,無法正常工作。刪除Android上的所有照片

到目前爲止,我有一個應用程序,它有一個大的圓形紅色按鈕。當用戶按下它時,它執行一個操作(此時它顯示'Hello World')。

相反,我希望它刪除Android設備上的所有照片。 (是的,這是做一個奇怪的東西,我知道)

我的問題:

  1. 這可能嗎?我一直無法使它工作,並找不到之前做過這些的應用程序。

  2. 我唯一的Android設備是Nexus 7平板電腦。我希望它可以在Android手機和平板電腦上使用。這也是可能的,因爲我知道他們的目錄結構有所不同?

+0

你好世界刪除所有照片...多麼偉大的應用程序與偉大的功能! – 2013-04-08 18:09:41

+0

如果你是一個即將被捕的作弊配偶,那是很好的功能。如果它也刪除了所有的短信,老虎伍茲會愛上這款應用。使用扔掉手機比較容易,但騙子不會。 – 2013-04-08 18:14:40

+0

哈哈不怕,一分鐘都沒人騙! :)可以做老虎一個巨大的忙! – themenace92 2013-04-08 22:22:22

回答

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 2013-04-09 10:53:58