zoukankan      html  css  js  c++  java
  • Android 利用webview开发webApp和本地交互出现的一个问题

    问题是:

    A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same 
    

    我英语不好看不太懂,大致的了解了下原因。

    之前我的代码是这样。

    1   @JavascriptInterface
    2         public void  needLogin(String username,String password)  {
    3           if (username.equals("abc")&&password.equals("123")){
    4               Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
    5               webView.loadUrl("file:///android_res/raw/test1.html");
    6           }else {
    7               Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
    8           }
    9         }

    运行就错了,就是在webView重新loadUrl的时候出现了问题。

    然后我这样改了下,就ok了,

     1   @JavascriptInterface
     2         public void  needLogin(String username,String password)  {
     3           if (username.equals("abc")&&password.equals("123")){
     4               Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
     5               webView.post(new Runnable() {
     6                   @Override
     7                   public void run() {
     8                       webView.loadUrl("file:///android_res/raw/test1.html");
     9                   }
    10               });
    11             
    12           }else {
    13               Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
    14           }
    15         }

    我想大家肯定猜到了什么了。webView会checkThread,导致不行,因为在js调用后的Java回调线程并不是主线程。

  • 相关阅读:
    Discuz热搜在哪里设置?
    Discuz如何设置帖子隐藏回复可见或部分可见方法
    新版Discuz!应用中心接入教程(转)
    Diszuz管理面版被锁怎么办?
    vs 2019 调试无法查看变量
    Google Docs 的格式刷快捷键
    chrome 的常用快捷键
    Activiti 数据库表结构
    activiti 报 next dbid
    尚硅谷Java基础_Day2
  • 原文地址:https://www.cnblogs.com/itpepe/p/4881953.html
Copyright © 2011-2022 走看看