2017-02-09 59 views
0

在我的應用程序中,有一個按鈕可以在手機銷售之前刪除手機中的所有照片,因此沒有人可以在手機中看到照片。從Android設備上刪除所有照片

該按鈕背後的代碼是這樣

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

     Cursor c = getApplicationContext().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); 
       getApplicationContext().getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=?", new String[]{Long.toString(mediaStoreId)}); 

       c.moveToNext(); 
      } 
      c.close(); 
     } 


    } 

的問題是,當調試器到達該行停止

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

不知道爲什麼它停止,以及如何解決它

任何人都可以幫助我?

感謝

+1

我認爲這需要許可。你有沒有在你的清單和代碼中聲明它們? – 0xDEADC0DE

+1

將Dmitry添加到下面的好答案中,刪除照片使其不顯示在文件瀏覽器中,並實際清除數據以便通過像「Recuva」這樣的軟件無法恢復是兩件不同的事情。 [這是更多信息](http://www.howtogeek.com/125521/htg-explains-why-deleted-files-can-be-recovered-and-how-you-can-prevent-it/) – Doomsknight

回答

1

不一定回答這個問題,但諮詢的一對夫婦位:

  • 從設備的MediaStore刪除照片不會刪除他們的所有痕跡。具體而言,許多設備維護包含所有照片縮略圖的縮略圖緩存,甚至刪除縮略圖。這些縮略圖通常具有足夠的分辨率來查看面部和文字。縮略圖緩存需要單獨刪除,其位置因不同的設備型號而異。

  • 從Android設備擦除數據的正確方法是執行出廠重置,這是所有設備提供的功能。即使如此,在某些設備上恢復出廠設置也不會完全擦除內部存儲器,這意味着如果設備已經生根,照片仍可恢復。

相關問題