如何删除或重命名本地视频的文件

问题描述

我正在从我的内部存储中获取视频,我想重命名文件删除文件就像我们在 MX 播放器、VLC 播放器中所做的一样,如果有人可以帮助我,请帮助我我尝试了很多次,但我不能如果您看到这个问题,请重命名删除文件,请给我一些提示或一些示例,这对我或许多其他人非常有帮助 提前致谢:)

这是我的活动

AllVideoslistadapter allVideoslistadapter;
ArrayList<VideoFiles> videosList = new ArrayList<VideoFiles>();
ArrayList<VideoFiles> selection_ist = new ArrayList<VideoFiles>();
SwipeRefreshLayout allvideoListRefresh;


int counter = 0;
public boolean is_in_action_mode = false;
TextView counter_textView,dumytext;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle(null);
    setContentView(R.layout.activity_all_videos_list);

    counter_textView = findViewById(R.id.counter_text);
    dumytext = findViewById(R.id.all_videos_dumy_text);
    counter_textView.setVisibility(View.GONE);

    toolbar = findViewById(R.id.recently_toolbar);
    setSupportActionBar(toolbar);

    goBack = findViewById(R.id.recently_goback);
    goBack.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackpressed();
        }
    });


    allvideoListRefresh = findViewById(R.id.all_video_refresh);
    allvideoListRefresh.setonRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            Toast.makeText(AllVideosList.this,"Refreshed",Toast.LENGTH_SHORT).show();
            videosList.clear();
            allVideoslistadapter.notifyDataSetChanged();
            videoListshow();
            clearactionMode();
            allvideoListRefresh.setRefreshing(false);
        }
    });




    videoListshow();
    checkPermissions();


}


private void videoListshow() {
    videosList = getAllVideos(this);
    RecyclerView recyclerView = findViewById(R.id.filesRV);
    recyclerView.setLayoutManager(new GridLayoutManager(this,1));
    allVideoslistadapter = new AllVideoslistadapter(this,videosList,this);
    recyclerView.setAdapter(allVideoslistadapter);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.searchview,menu);
    MenuItem item = menu.findItem(R.id.search_view);
    SearchView searchView = (SearchView)item.getActionView();
    searchView.setQueryHint("enter video name");
    searchView.setonQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            allVideoslistadapter.getFilter().filter(query);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            allVideoslistadapter.getFilter().filter(newText);
            return false;
        }
    });

    return true;
}


private void checkPermissions() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},123);

        } else {
            videosList = getAllVideos(this);
        }

    }
}
@Override
public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode,permissions,grantResults);
    if (requestCode == 123) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            videosList = getAllVideos(this);

        } else {
            Toast.makeText(this,"Permission Not Granted",Toast.LENGTH_SHORT).show();
        }
    }


}


public ArrayList<VideoFiles> getAllVideos(Context context) {


    ArrayList<VideoFiles> tempVideoFiles = new ArrayList<>();
    Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    String sortOrder = MediaStore.Video.Media.DATE_ADDED + " DESC";
    String[] projection = {
            MediaStore.Video.Media.DATA,MediaStore.Video.Media._ID,MediaStore.Video.Media.TITLE,MediaStore.Video.Media.SIZE,MediaStore.Video.Media.DURATION,MediaStore.Video.Media.DATE_ADDED,MediaStore.Video.Media.disPLAY_NAME,MediaStore.Video.Media.RESOLUTION,};

    Cursor cursor = context.getContentResolver().query(uri,projection,null,sortOrder);
    if (cursor != null) {

        int idColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID);
        int dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        int titleColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE);
        int sizeColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
        int durationnColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION);
        int dateAddedColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATE_ADDED);
        int displayColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.disPLAY_NAME);
        int ressolutionColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.RESOLUTION);


        while (cursor.movetoNext()) {

            String path = cursor.getString(dataColumn);
            String id = cursor.getString(idColumn);
            String title = cursor.getString(titleColumn);
            int size = cursor.getInt(sizeColumn);
            String dataAdded = cursor.getString(dateAddedColumn);
            String fileName = cursor.getString(displayColumn);
            String resolution = cursor.getString(ressolutionColumn);
            int duration = cursor.getInt(durationnColumn);


            String duration_formatted;
            int sec = (duration / 1000) % 60;
            int min = (duration / (1000 * 60)) % 60;
            int hrs = duration / (1000 * 60 * 60);
            if (hrs == 0) {
                duration_formatted = String.valueOf(min).concat(":".concat(String.format(Locale.UK,"%02d",sec)));
            } else {
                duration_formatted = String.valueOf(hrs).concat(":".concat(String.format(Locale.UK,min).concat(":".concat(String.format(Locale.UK,sec)))));
            }

            String humanReadableSize;
            if (size < 1024) {
                humanReadableSize = String.format(
                        context.getString(R.string.app_size_b),(double) size
                );
            } else if (size < Math.pow(1024,2)) {
                humanReadableSize = String.format(
                        context.getString(R.string.app_size_kib),(double) (size / 1024)
                );
            } else if (size < Math.pow(1024,3)) {
                humanReadableSize = String.format(
                        context.getString(R.string.app_size_mib),(double) (size / Math.pow(1024,2)));
            } else {
                humanReadableSize = String.format(
                        context.getString(R.string.app_size_gib),3))
                );
            }


            VideoFiles videoFiles = new VideoFiles(id,path,title,fileName,humanReadableSize,dataAdded,resolution,duration_formatted);



            tempVideoFiles.add(videoFiles);


        }
        cursor.close();

    }
    return tempVideoFiles;
}


@Override
public void onBackpressed() {
    if (is_in_action_mode){
        clearactionMode();
        allVideoslistadapter.notifyDataSetChanged();
    }
    else  {
        super.onBackpressed();
    }


}
@Override
public boolean onLongClick(View v) {
    toolbar.getMenu().clear();
    toolbar.inflateMenu(R.menu.contextual_menu);
    counter_textView.setVisibility(View.VISIBLE);
    goBack.setVisibility(View.GONE);
    dumytext.setVisibility(View.GONE);
    is_in_action_mode = true;
    allVideoslistadapter.notifyDataSetChanged();
    getSupportActionBar().setdisplayHomeAsUpEnabled(true);
    return true;
}
public  void  prepareSelection (View view,int position){

    if (((CheckBox)view).isChecked()){
        selection_ist.add(videosList.get(position));
        counter = counter+1;
        updatecounter(counter);
    }else {
        selection_ist.remove(videosList.get(position));
        counter = counter-1;
        updatecounter(counter);
    }

}
public void updatecounter(int counter){
    if (counter == 0){
        counter_textView.setText("0 item Selected");
    }else {
        counter_textView.setText(counter+" item Selected");
    }
}
@Override
public boolean onoptionsItemSelected(@NonNull MenuItem item) {
    if (item.getItemId()==R.id.delet_contex){

        allVideoslistadapter.updateAdapter(selection_ist);
        clearactionMode();

    }
    else if (item.getItemId()==android.R.id.home){
        clearactionMode();
        allVideoslistadapter.notifyDataSetChanged();
    }

    return true;
}
public  void clearactionMode(){
    is_in_action_mode = false;
    toolbar.getMenu().clear();
    toolbar.inflateMenu(R.menu.searchview);
    getSupportActionBar().setdisplayHomeAsUpEnabled(false);
    counter_textView.setVisibility(View.GONE);
    goBack.setVisibility(View.VISIBLE);
    dumytext.setVisibility(View.VISIBLE);
    counter =0;
    selection_ist.clear();

}

这是我的适配器

public class AllVideoslistadapter extends RecyclerView.Adapter<AllVideoslistadapter.MyViewHolder> implements Filterable {

private Context mContext;
ArrayList<VideoFiles> videoFiles;
ArrayList<VideoFiles> videoFilesFilter;
AllVideosList allVideosList;
View view;
Dialog dialog;


public AllVideoslistadapter(Context mContext,ArrayList<VideoFiles> videoFiles,AllVideosList allVideosList) {
    this.mContext = mContext;
    this.videoFiles = videoFiles;
    this.videoFilesFilter = videoFiles;
    this.allVideosList = allVideosList;
}


@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    view = LayoutInflater.from(mContext).inflate(R.layout.row_video,parent,false);
    return new MyViewHolder(view,allVideosList);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder,int position) {


    holder.fileName.setText(videoFilesFilter.get(position).getTitle());
    holder.showQuality.setText(videoFilesFilter.get(position).getResolution());
    holder.fileSize.setText(videoFilesFilter.get(position).getSize());
    holder.tv_duration.setText(videoFilesFilter.get(position).getDuration());
    Glide.with(mContext).load(new File(videoFilesFilter.get(position).getPath())).into(holder.imgView_thumbnail);






    holder.itemView.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mContext,"AllList",Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(mContext,PlayerActivity.class);
            intent.putExtra("position",position);
            intent.putExtra("sender","FilesIsSending");
            intent.putExtra("title",videoFilesFilter.get(position).getTitle());

            //Transition
            Pair[] pairs = new Pair[1];
            pairs[0] = new Pair<View,String>(holder.imgView_thumbnail,"logo_trans");
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation((Activity) mContext,pairs);
                mContext.startActivity(intent,options.toBundle());
            } else {
                mContext.startActivity(intent);
            }
        }
    });


    if (!allVideosList.is_in_action_mode){
        holder.checkBox.setVisibility(View.GONE);
    }else {
        holder.checkBox.setVisibility(View.VISIBLE);
        holder.checkBox.setChecked(false);
    }


    holder.showMenu.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(mContext,R.style.BottomShteetdialogTheme);
            View bottomSheetView = LayoutInflater.from(mContext.getApplicationContext()).inflate(R.layout.more_options,(LinearLayout) view.findViewById(R.id.more_options_container));

            bottomSheetView.findViewById(R.id.more_options_cancel).setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    bottomSheetDialog.dismiss();
                }
            });
            bottomSheetView.findViewById(R.id.more_share).setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(mContext,"Loading...",Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.putExtra(Intent.EXTRA_TEXT,videoFilesFilter.get(position).getTitle());
                    intent.putExtra(Intent.EXTRA_STREAM,Uri.parse(videoFilesFilter.get(position).getPath()));
                    intent.setType("video/*");
                    mContext.startActivity(Intent.createChooser(intent,"Share this"));
                }
            });
            bottomSheetView.findViewById(R.id.more_rename).setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog = new Dialog(mContext);
                    dialog.setContentView(R.layout.player_more);
                    dialog.getwindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
                    dialog.getwindow().getAttributes().windowAnimations = R.style.DialogAnimation;
                    dialog.setCancelable(true);
                    dialog.show();
                }
            });
            bottomSheetView.findViewById(R.id.more_delete).setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext,AlertDialog.THEME_DEVICE_DEFAULT_DARK);
                    alertDialogBuilder.setTitle("Are you sure!").setCancelable(false)
                            .setPositiveButton("Ok",new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,int which) {
                                    videoFilesFilter.remove(position);
                                    notifyDataSetChanged();
                                }
                            })
                            .setNegativeButton("Cancel",int which) {
                                    dialog.cancel();
                                }
                            });
                    AlertDialog alertDialog = alertDialogBuilder.create();
                    alertDialog.show();
                    bottomSheetDialog.dismiss();
                }
            });
            bottomSheetView.findViewById(R.id.more_properties).setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent properties = new Intent(mContext,PropertiesOfFile.class);
                    properties.putExtra("title",videoFilesFilter.get(position).getTitle());
                    properties.putExtra("res",videoFilesFilter.get(position).getResolution());
                    properties.putExtra("sizee",videoFilesFilter.get(position).getSize());
                    properties.putExtra("dur",videoFilesFilter.get(position).getDuration());
                    properties.putExtra("loc",videoFilesFilter.get(position).getPath());
                    properties.putExtra("date",videoFilesFilter.get(position).getDateAdded());
                    bottomSheetDialog.dismiss();
                    mContext.startActivity(properties);
                }
            });


            bottomSheetDialog.setContentView(bottomSheetView);
            bottomSheetDialog.show();
        }
    });


}

@Override
public int getItemCount() {
    return videoFilesFilter.size();
}

@Override
public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            String character = constraint.toString();
            if (character.isEmpty()) {
                videoFilesFilter = videoFiles;
            } else {
                List<VideoFiles> filterList = new ArrayList<>();
                for (VideoFiles modelVideo : videoFiles) {
                    if (modelVideo.getTitle().toLowerCase().contains(character.toLowerCase())) {
                        filterList.add(modelVideo);

                    }
                }
                videoFilesFilter = (ArrayList<VideoFiles>) filterList;
            }
            FilterResults filterResults = new FilterResults();
            filterResults.values = videoFilesFilter;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint,FilterResults results) {
            videoFilesFilter = (ArrayList<VideoFiles>) results.values;
            notifyDataSetChanged();
        }
    };

}


static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    ImageView imgView_thumbnail;
    TextView fileName,tv_duration,showQuality,fileSize;
    ImageButton showMenu;

    CheckBox checkBox;
    AllVideosList allVideosList;
    RelativeLayout relativeLayout;



    public MyViewHolder(@NonNull View itemView,AllVideosList allVideosList) {
        super(itemView);

        imgView_thumbnail = itemView.findViewById(R.id.imageView_thumbnail);
        fileName = itemView.findViewById(R.id.tv_title);
        tv_duration = itemView.findViewById(R.id.tv_duration);
        showMenu = itemView.findViewById(R.id.more);
        showQuality = itemView.findViewById(R.id.quality_showing);
        fileSize = itemView.findViewById(R.id.show_MB);

        this.allVideosList = allVideosList;
        checkBox = itemView.findViewById(R.id.select_chechBox);
        relativeLayout = itemView.findViewById(R.id.long_select_true);
        relativeLayout.setonLongClickListener(allVideosList);
        checkBox.setonClickListener(this);

    }

    @Override
    public void onClick(View v) {
        allVideosList.prepareSelection(v,getAdapterPosition());
    }


}


public void updateAdapter(ArrayList<VideoFiles> list0){
    for (VideoFiles allVideosRemove : list0)
    {

        videoFilesFilter.remove(allVideosRemove);
    }
    notifyDataSetChanged();

}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...