0

I want to build a File Manager.I get list of all files using ContentResolver.For example I get all audio file in this way:

   private void getMusic(){

    ContentResolver contentResolver=getContentResolver();
    Uri songUri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor songCursor=contentResolver.query(songUri,null,null,null,null);

    if(songCursor!=null && songCursor.moveToFirst()){
        Log.e(TAG,"if :");
        int songTitle=songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
        int songPath=songCursor.getColumnIndex(MediaStore.Audio.Media.DATA);

        do{
            String currentTitle=songCursor.getString(songTitle);
            Uri currentPath=Uri.parse(songCursor.getString(songPath));
             models.add(new model(currentTitle,currentPath));
             adapter.notifyDataSetChanged();
        }while (songCursor.moveToNext());
    }
}

I write this method for deleting file, but didn't work for me.I also get WRITE and READ external permission from user.

 private void deleteItem(int position){
    File fdelete = new File(models.get(position).getPath().toString());
    if (fdelete.exists()) {
        boolean flag=fdelete.delete();
        if (flag) {
            models.remove(models.get(position));
            adapter.notifyDataSetChanged();
            disableSelectionMode();
            Toast.makeText(this,"File successfully deleted.",Toast.LENGTH_SHORT).show();
        } else {
            disableSelectionMode();
            Toast.makeText(this,"File did not deleted!",Toast.LENGTH_SHORT).show();
        }
    }
}

And this is my model:

    public class model {
    private int id;
    private String title;
    private Uri path;

    public model(String title, Uri path) {
        this.title = title;
        this.path = path;
    }


    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Uri getPath() {
        return path;
    }

    public void setPath(Uri path) {
        this.path = path;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }   
}
maryam
  • 1,437
  • 2
  • 18
  • 40

1 Answers1

0

Finally I find the solution.I should deleted file using ContentResolver. I done it this way:

private void deleteItem(model item){
    switch (type){
        case AUDIOS:{
            int b=getContentResolver().delete(
                    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                    MediaStore.MediaColumns.DATA + "='" + item.getPath().getPath() + "'", null
            );
            Log.e(TAG,"b: "+b);
            break;
        }
        case IMAGES:{
            int b=getContentResolver().delete(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    MediaStore.MediaColumns.DATA + "='" + item.getPath().getPath() + "'", null
            );
            Log.e(TAG,"b: "+b);
            break;
        }
        case VIDEOS:{
            int b=getContentResolver().delete(
                    MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                    MediaStore.MediaColumns.DATA + "='" + item.getPath().getPath() + "'", null
            );
            Log.e(TAG,"b: "+b);
            break;
        }
        case COMPRESSED:
        case APPS:
        case DOCUMENTS :{
            int bex=getContentResolver().delete(
                    MediaStore.Files.getContentUri("external"),
                    MediaStore.MediaColumns.DATA + "='" + item.getPath().getPath() + "'", null
            );
            int bin=getContentResolver().delete(
                    MediaStore.Files.getContentUri("internal"),
                    MediaStore.MediaColumns.DATA + "='" + item.getPath().getPath() + "'", null
            );
            Log.e(TAG,"bex: "+bex);
            Log.e(TAG,"bin: "+bin);
            break;
        }

    }
}
maryam
  • 1,437
  • 2
  • 18
  • 40