Android 将回收器适配器中的clicklistener设置为从firebase下载视频

Android 将回收器适配器中的clicklistener设置为从firebase下载视频,android,firebase-realtime-database,android-recyclerview,Android,Firebase Realtime Database,Android Recyclerview,我想在回收适配器中设置一个按钮,从firebase获取视频,这样用户就可以从firebase将视频下载到手机中。下面是我的firebase适配器代码,我正在使用它从firebase传送视频。 我还尝试了stackoverflow中的各种代码,但我不知道为什么我的程序会突然崩溃并出现未知错误。我收到错误-“用户10388和当前进程都没有android.permission.WRITE\u外部存储。”。我已在清单文件中授予所有读写存储权限 public class VideosAdapter ext

我想在回收适配器中设置一个按钮,从firebase获取视频,这样用户就可以从firebase将视频下载到手机中。下面是我的firebase适配器代码,我正在使用它从firebase传送视频。 我还尝试了stackoverflow中的各种代码,但我不知道为什么我的程序会突然崩溃并出现未知错误。我收到错误-“用户10388和当前进程都没有android.permission.WRITE\u外部存储。”。我已在清单文件中授予所有读写存储权限

public class VideosAdapter extends FirebaseRecyclerAdapter<VideoItem , VideosAdapter.myViewHolder> {

    ImageButton download;   <------ Button to download video
    ImageButton share;      <------ Button for sharing video on other social media platforms

   
    public VideosAdapter(@NonNull FirebaseRecyclerOptions<VideoItem> options) {
        super(options);
    }
 
    @Override
    protected void onBindViewHolder(@NonNull myViewHolder holder, int position, @NonNull VideoItem model) {
            holder.setdata(model);


download.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(model.videoUrl));
                    request.setDescription("download");
                    request.setTitle(""+model.videoTitle);

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                        request.allowScanningByMediaScanner();
                        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                    }
                    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, ""+model.videoTitle+".mp4");


                    DownloadManager manager = (DownloadManager) v.getContext().getSystemService(Context.DOWNLOAD_SERVICE);
                    manager.enqueue(request);
                    
                    
                }
            });

    }


    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_container_video, parent, false);

        download = view.findViewById(R.id.download);  <------ i want to set clicklistener on this 
                         button to download video.
        share = view.findViewById(R.id.vidshare);


        return new myViewHolder(view);
    }

    class myViewHolder extends RecyclerView.ViewHolder{

        VideoView videoView;
        TextView videoTitle;


        public myViewHolder(@NonNull View itemView) {
            super(itemView);
            videoView = itemView.findViewById(R.id.videoview);     <---- Displaying my videos in video view
            videoTitle = itemView.findViewById(R.id.textVideoTitle);


        }

        void setdata(VideoItem obj){
            videoView.setVideoPath(obj.videoUrl);   <---- accessing the url of my video
            videoTitle.setText(obj.videoTitle);
            videoView.setOnPreparedListener(mp -> {
                mp.start();

            });

            videoView.setOnCompletionListener(MediaPlayer::start);

        }
    }



}
公共类VideosAdapter扩展了FirebaseRecyclerAdapter{

ImageButton下载;“突然崩溃并给我未知错误”-您的问题,以提供准确的错误消息和对导致错误的代码行的引用。将错误日志与问题一起发布。如果应用程序崩溃,则会出现堆栈跟踪。请在logcat上查找该问题,并将其添加到您的问题中。请使用@AlexMamoI have updated my question回复,并给出我收到的错误以及我从stackoverflow下载视频时使用的代码。