java - 来自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);
}
}
解决方案
推荐阅读
- android - MaterialDatePicker 日历编号未在中心对齐
- javascript - 在根据用户是否登录网站显示文本或链接的表格中,您是否只能使用 CSS 隐藏文本?
- python-3.x - Python TimeSeries 假期的绘图问题(没有行日期和时间)
- ios - Xamarin.iOS 状态栏在更改它和 iPad 上的方向时保持角落的颜色
- javascript - 如何将图片定位到不同的地方
- python - 遍历数组多线程
- listview - 如何修复 ListView 生成的错误?
- symfony - 使用 Symfony 通过 API 验证实体
- excel - 用字典键计算
- javascript - 适应上一个问题,ReferenceError: object is not defined