问题描述
发现我是Java的新手,并且遇到一个小的运行时错误。从Firebase以“回收者”视图下载视频时遇到错误。有多个视频,用户从中选择一个想法,如果他喜欢该视频,则可以下载该视频。但下载的文件扩展名较少。
这是我的代码:-
public class Showvideo extends AppCompatActivity {
private static final int PERMISSION_STORAGE_CODE = 1000;
DatabaseReference databaseReference,likesrefernce;
RecyclerView recyclerView;
FirebaseDatabase database;
String name,url,downloadurl;
Boolean likechecker = false;
private LinearLayoutManager linearLayoutManager;
private InterstitialAd mInterstitialAd ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_showvideo);
linearLayoutManager = new LinearLayoutManager(Showvideo.this);
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
recyclerView = findViewById(R.id.recyclerview_ShowVideo);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
database = FirebaseDatabase.getInstance();
databaseReference = database.getReference("video");
likesrefernce = database.getReference("likes");
prepareAd();
ScheduledExecutorService scheduledExecutorService =
Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (mInterstitialAd.isLoaded()){
mInterstitialAd.show();
}
prepareAd();
}
});
}
},1,TimeUnit.MINUTES);
}
private void firebaseSearch(String searchtext){
String query = searchtext.toLowerCase();
Query firebaseQuery = databaseReference.orderByChild("search").startAt(query).endAt(query + "\uf8ff");
FirebaseRecyclerOptions<Member> options =
new FirebaseRecyclerOptions.Builder<Member>()
.setQuery(firebaseQuery,Member.class)
.build();
FirebaseRecyclerAdapter<Member,ViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<Member,ViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder,int position,@NonNull Member model) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
final String postkey = getRef(position).getKey();
holder.setExoplayer(getApplication(),model.getName(),model.getVideourl());
holder.setOnClicklistener(new ViewHolder.Clicklistener() {
@Override
public void onItemClick(View view,int position) {
name = getItem(position).getName();
url = getItem(position).getVideourl();
Intent intent = new Intent(Showvideo.this,FullScreen.class);
intent.putExtra("nam",name);
intent.putExtra("ur",url);
startActivity(intent);
}
@Override
public void onItemLongClick(View view,int position) {
}
});
holder.setLikesbuttonStatus(postkey);
holder.commentbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Showvideo.this,CommentsActivity.class);
intent.putExtra("postkey",postkey);
startActivity(intent);
}
});
holder.likebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
likechecker = true;
likesrefernce.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (likechecker.equals(true)){
if (dataSnapshot.child(postkey).hasChild(currentUserId)){
likesrefernce.child(postkey).child(currentUserId).removeValue();
likechecker = false;
}else {
likesrefernce.child(postkey).child(currentUserId).setValue(true);
likechecker = false;
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item,parent,false);
return new ViewHolder(view);
}
};
firebaseRecyclerAdapter.startListening();
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<Member> options =
new FirebaseRecyclerOptions.Builder<Member>()
.setQuery(databaseReference,@NonNull Member model) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
final String postkey = getRef(position).getKey();
holder.setExoplayer(getApplication(),model.getVideourl());
holder.setOnClicklistener(new ViewHolder.Clicklistener() {
@Override
public void onItemClick(View view,int position) {
}
});
holder.setLikesbuttonStatus(postkey);
holder.downloadbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if (checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_DENIED){
String permission = (Manifest.permission.WRITE_EXTERNAL_STORAGE);
requestPermissions(new String[]{permission},PERMISSION_STORAGE_CODE);
}else {
downloadurl = getItem(position).getVideourl();
startDownloading(downloadurl);
}
}else {
startDownloading(downloadurl);
}
};
}
};
firebaseRecyclerAdapter.startListening();
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
private void startDownloading(String downloadurl) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadurl));
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE);
request.setTitle("Download");
request.setDescription("Downloading file...");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,""+System.currentTimeMillis());
DownloadManager manager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
@Override
public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
switch (requestCode){
case PERMISSION_STORAGE_CODE:{
if (grantResults.length >0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
startDownloading(downloadurl);
}
else {
Toast.makeText(this,"Permission Denied By You",Toast.LENGTH_SHORT).show();
}
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)