Android WebView有时显示白色空白页,有时显示文件
您好,我想问一下,对于我的问题是否有任何解决方案。这是我的代码 StudentRepoAdapter.classAndroid WebView有时显示白色空白页,有时显示文件,android,firebase-realtime-database,android-intent,android-webview,Android,Firebase Realtime Database,Android Intent,Android Webview,您好,我想问一下,对于我的问题是否有任何解决方案。这是我的代码 StudentRepoAdapter.class package com.example.citeresearchrepository.StudentAdapter; import android.app.DownloadManager; import android.content.Context; import android.content.Intent; import android.net.Uri; import and
package com.example.citeresearchrepository.StudentAdapter;
import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.citeresearchrepository.Model.ResearchRepository;
import com.example.citeresearchrepository.R;
import com.example.citeresearchrepository.StudentPackage.ViewFileActivity;
import java.util.ArrayList;
import static android.os.Environment.DIRECTORY_DOWNLOADS;
public class StudentRepoAdapter extends RecyclerView.Adapter<StudentRepoAdapter.StudentViewHolder> {
Context context;
ArrayList<ResearchRepository> researchRepositoryArrayList;
public StudentRepoAdapter(Context c, ArrayList<ResearchRepository> repositories){
context = c;
researchRepositoryArrayList = repositories;
}
@NonNull
@Override
public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new StudentViewHolder(LayoutInflater.from(context).inflate(R.layout.studentrepo_row,parent,false));
}
@Override
public void onBindViewHolder(@NonNull final StudentViewHolder holder, final int position) {
holder.researchtitle_view.setText(researchRepositoryArrayList.get(position).getResearchtitle());
holder.researchdate_view.setText(researchRepositoryArrayList.get(position).getResearchtimeline());
holder.researchname_view.setText(researchRepositoryArrayList.get(position).getFilecapture());
holder.researchdescription_view.setText(researchRepositoryArrayList.get(position).getResearchdescription());
final String url = researchRepositoryArrayList.get(position).getUrl();
final String filecapture = researchRepositoryArrayList.get(position).getFilecapture();
holder.btnpdf_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloadFile(holder.researchname_view.getContext(), researchRepositoryArrayList.get(position).getFilecapture(),".pdf",DIRECTORY_DOWNLOADS,researchRepositoryArrayList.get(position).getUrl());
}
});
holder.btnpdf_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(holder.btnpdf_view.getContext(), ViewFileActivity.class);
intent.putExtra("filename", researchRepositoryArrayList.get(position).getResearchtitle());
intent.putExtra("FilePDF", researchRepositoryArrayList.get(position).getUrl());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
holder.btnpdf_view.getContext().startActivity(intent);
}
});
}
public long downloadFile(Context context, String fileName, String fileExtension, String destinationDirectory, String url) {
DownloadManager downloadmanager = (DownloadManager) context.
getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalFilesDir(context, destinationDirectory, fileName + fileExtension);
return downloadmanager.enqueue(request);
}
@Override
public int getItemCount() {
return researchRepositoryArrayList.size();
}
class StudentViewHolder extends RecyclerView.ViewHolder{
public TextView researchtitle_view,researchdate_view,researchname_view,researchdescription_view,researchtitle_url;
public Button btnpdf_download;
public Button btnpdf_view;
public StudentViewHolder(@NonNull View itemView) {
super(itemView);
researchtitle_view = itemView.findViewById(R.id.researchtitle_view);
researchdate_view = itemView.findViewById(R.id.researchdate_view);
researchname_view = itemView.findViewById(R.id.researchname_view);
researchdescription_view = itemView.findViewById(R.id.researchdescription_view);
researchtitle_url = itemView.findViewById(R.id.researchtitle_view);
btnpdf_download = itemView.findViewById(R.id.btnpdf_download);
btnpdf_view = itemView.findViewById(R.id.btnpdf_view);
}
}
}
是的,它已经获取了researchtitle和researchurl,我已经可以打开它了,但问题是有时它可以工作,有时在我打算查看FileActivity时会留下一个空白页,所以基本上是为了让我再次打开文件,我必须来回地按按钮,看看它是否会再次加载url文件。。。顺便说一句,我获取的URL是一个PDF文件,该URL存储在实时数据库中
PS:我已经在这里尝试和搜索了,但没有一个解决方案有效,不幸的是,要么我理解他们的解决方案错误,要么对他们有效的解决方案对我不起作用。谢谢大家! 我解决了我的问题,我在这里找到了它。我解决了我的问题,我在这里找到了它。
package com.example.citeresearchrepository.StudentPackage;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.example.citeresearchrepository.R;
import java.net.URLEncoder;
public class ViewFileActivity extends AppCompatActivity {
WebView pdfView;
String filename, FilePDF;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_file);
pdfView = findViewById(R.id.pdfView);
pdfView.getSettings().setJavaScriptEnabled(true);
filename = getIntent().getStringExtra("filename");
FilePDF = getIntent().getStringExtra("FilePDF");
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle(filename);
progressDialog.setMessage("File Opening...");
pdfView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressDialog.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressDialog.dismiss();
}
});
String url = "";
try{
url = URLEncoder.encode(FilePDF, "UTF-8");
}catch (Exception e){
e.getMessage();
}
String gooeldoc = "https://docs.google.com/gview?embedded=true&url=" + url;
String finalUrl = gooeldoc;
pdfView.loadUrl(finalUrl);
}
}