Android WebView有时显示白色空白页,有时显示文件

Android 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

您好,我想问一下,对于我的问题是否有任何解决方案。这是我的代码

StudentRepoAdapter.class

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);
    }

}