2013-04-08 4 views
2

저는 비교적 안드로이드에 익숙하며 잘 작동하지 않습니다.모든 사진을 Android에서 삭제하십시오.

지금까지 하나의 큰 원형 빨간색 버튼이있는 앱이 있습니다. 사용자가 이것을 누르면 작업을 실행합니다 ('Hello World'를 표시하는 순간).

대신 Android 기기에서 모든 사진을 삭제하고 싶습니다.

  1. 이게 가능 :

    내 질문 (예, 나는 알고있다, 할 수있는 이상한 일이)? 작동하기가 어려워서 이전에 해낸 앱을 찾을 수 없습니다.

  2. 내가 가지고있는 Android 기기는 Nexus 7 태블릿뿐입니다. Android 휴대 전화와 태블릿에서 모두 작동하고 싶습니다. 디렉토리 구조가 다양하다는 것을 알고 있기 때문에 이것이 가능합니까?

+0

안녕하세요. 모든 사진을 삭제하는 세계 ... 위대한 기능을 갖춘 훌륭한 앱입니다. –

+0

당신이 잡히지 않을 속임수 배우자라면 좋은 기능입니다. 타이거 우즈 (Tiger Woods)도 모든 SMS 메시지를 삭제했다면 앱을 좋아할 것이다. 휴대 전화를 버리는 것이 더 쉽지만 사기꾼은 휴대하지 마십시오. –

+0

하하는 두렵지 않습니다. 아무도 속여서 속일 수 없습니다! :) 호랑이에게 엄청난 호의를 보냈을 수도 있습니다! – themenace92

답변

3

예. 이미지는 삭제할 수 있지만 한 번에 모두 수행 할 수 있다고는 생각하지 않습니다.

Mediastore을 쿼리하여 모든 이미지의 _ID를 얻은 다음 목록을 반복 재생하고 삭제하는 것이 좋습니다. 여기에 몇 가지 샘플 코드가 있지만 더 잘 최적화 될 수 있다고 확신합니다. 이 코드는 파일 시스템에 무관심하므로 어디서든 작동해야합니다.

코드가 아니라 당신이 ArrayList를 통해 원래의 루프 또는 루프에서 그 권리를 할 수있는,

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(); 
    } 

그런 다음 삭제 Mediastore.Images에있는 모든 항목의 목록을 얻을 수 있지만, 여기 삭제하는 방법입니다하기 :

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

매우 도움이됩니다. 고마워요! – themenace92

관련 문제