首页 > 解决方案 > 来自firestore的Webview失败

问题描述

我做了一个 webview 活动。为此,正在从 firestore 接收 url 数据。有时它工作正常,点击它会显示进度条,然后正确查看文件。但有时,onclick 它不显示任何内容,而是显示一个白色的空白屏幕(意味着甚至没有加载或显示进度条)。当我回去一次又一次地尝试时,它会在 3 或 4 次尝试后正常工作。可能是什么原因?

请支持。

适配器类

private List<Accountsmodel> list;
        Accounts_Activity accounts_activity;
        private ItemClickListener itemClickListener;

        public AccountsAdapter(List<Accountsmodel> list, Accounts_Activity accounts_activity, ItemClickListener itemClickListener) {
            this.list=list;
            this.accounts_activity=accounts_activity;
            this.itemClickListener=itemClickListener;
        }



        @NonNull
        @Override
        public Accountsviewholder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
            LayoutInflater layoutInflater = LayoutInflater.from(accounts_activity);
            View view = layoutInflater.inflate(R.layout.acc_pdf_item,parent,false);
            return new Accountsviewholder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull final Accountsviewholder accountsviewholder, final int position) {
            accountsviewholder.aName.setText(list.get(position).getName());
            accountsviewholder.aUploaddate.setText(list.get(position).getUploaddate());

            accountsviewholder.acccardclk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    itemClickListener.onClick(view,position,false);
                }
            });
        }

        @Override
        public int getItemCount() {
            return list.size();

        }

        public class Accountsviewholder extends RecyclerView.ViewHolder  {
            private TextView aName;
            private TextView aUploaddate;
            private ImageButton accvbutton;
            private CardView acccardclk;

            public Accountsviewholder(View itemView) {
                super(itemView);
                aName = itemView.findViewById(R.id.accfilename);
                aUploaddate = itemView.findViewById(R.id.adate);
                acccardclk=itemView.findViewById(R.id.accRecyclk);

            }


        }

    }

网络视图类

public class PDFActivity extends AppCompatActivity {

    WebView webView;
    private ProgressBar progressBar;
    private String downloadlink;



    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_p_d_f);

        webView = findViewById(R.id.aWV);
        progressBar = findViewById(R.id.apb);
        progressBar.setVisibility(View.VISIBLE);


        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);
        webView.setWebViewClient(new WebViewClient());
        Intent intent = getIntent();
        final int position = intent.getIntExtra("position", 0);
        downloadlink= (Accounts_Activity.list.get(position).getLink());
        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url) {
                webView.loadUrl("javascript:(function() { " +
                        "document.querySelector('[role=\"toolbar\"]').remove();})()");
                progressBar.setVisibility(View.GONE);
            }
        });

        String url="";
        try {
            url = URLEncoder.encode(downloadlink,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        webView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" +url);

        }
}

标签: javaandroidandroid-studiowebviewgoogle-cloud-firestore

解决方案


推荐阅读