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