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回调线程并不是主线程。

时间: 2024-10-09 17:48:09

Android 利用webview开发webApp和本地交互出现的一个问题的相关文章

Android中WebView开发汇总

1 去掉WebView的白色背景 2 WebView的超时处理 3 WebView加载网络PDF资源 4 图片自适应WebView大小(铺满WebView) 5 WebView利用UserAgent传递SESSIONID 6 监听WebView滑动到底部 7 WebView长按后调用文字复制功能 8 Android硬件加速以及WebView的onPause,onResume,OnDestroy 9 WebView不能加载Twitter的问题 10 WebView加载本地SD卡上的图片 11 We

android利用WebView实现浏览器的封装

android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 参考:http://developer.android.com/reference/android/webkit/WebView.html 效果如下: 上面两张图分别是首页的截图,当点击java时的截图.可以看到在浏览器上面已经没有地址栏了.这个是利用WebViewClient显示的内容.相关代码如下

Android中webview和js之间的交互(转)

http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示: mWebView.getSettings().setJavaScriptEnabled(true); mWebV

Android使用WebView开发常见的坑

原文链接:http://mp.weixin.qq.com/s?__biz=MzAwODE1NTI2MQ==&tempkey=uP3a%2BOgIN7vPbLfJp3BTCl2KabYi1%2FfBUQEkkQD7ixoNgGn4JfrR81AwdwsBof%2FhsiCe4%2B9o0KJQ6lv%2B32pSyH46EQAIwJ5i%2BxxED%2BjrIpwHyFCFbDUibPnNlrZDxQAc4JV34qtCRBPLX6fF3qjtjQ%3D%3D&chksm=1b727810

Android中webview跟JAVASCRIPT中的交互

在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之: 1 JAVASCRIPT脚本调用android程序    要在webview中,调用addJavascriptInterface(OBJ,interfacename) 其中,obj为和javascript通信的应用程序,interfacename为提供给JAVASCRIPT调用的 名称

(五) Android中WebView跟JavaScript中的交互

在 android 的应用程序中,可以直接调用 WebView 中的 javascript 代码,而 WebView 中的 javascript 代码,也可以去调用 ANDROID 应用程序(也就是 JAVA 部分的代码).下面举例说明之: 1.JAVASCRIPT 脚本调用 android 程序 要在 WebView 中,调用 addJavascriptInterface(OBJ,interfacename)其中,obj 为和 javascript 通信的应用程序,interfacename

Android笔记2——开发前奏2工程目录介绍和一个小应用

转载请注明http://www.cnblogs.com/devtrees/p/4405519.html 一.创建第一个应用HelloWorld (一)创建步骤: 1.New出一个Android Application Project 三种方式 1): 2): 3): 2.会出现下图的窗口: 分别是:应用名:给用户看的 工程名:开发工具中显示的项目名 包名: 客户端中设置->应用->应用列表中显示的名字 兼容的最低版本: 兼容的最高版本: 开发基于的版本:(一般将兼容的最高版本和开发所基于的版本

Android中WebView的JavaScript代码和本地代码交互的三种方式

一.Android中WebView的漏洞分析 最近在开发过程中遇到一个问题,就是WebView使用的时候,还是需要解决之前系统(4.2之前)导致的一个漏洞,虽然现在这个系统版本用户很少了,但是也不能忽视,关于这个漏洞,这里就不多做解释了,可能有的同学早就了解了,本来想写一篇文章详细介绍一下,但是网上的知识太多了,而且都很详细,就没弄了,这里大致简单明了的说几句: 第一.漏洞产生的原因 这个漏洞导致的原因主要是因为Android中WebView中的JS访问本地方法的方式存在缺陷,我们做过交互的都知

酷六类视频网站Android端软件开发视频教程

风网大话优酷 酷六类视频网站Android端软件开发视频教程本系列教程主要讲解一个类似于酷六.优酷等视频网站Android端软件的整体架构.开发流程及代码编写的全过程.具体涉及网络的上传.下载.多线程.SQLite数据库.SDcard操作.UI界面的显示和事件响应.设计模式的介绍和实战,IoC的精妙应用等. 课程目录:1.软件的演示以及和其他软件的比较 133MB2.Android娱乐多媒体的开发的重要的战略意义分析 45.3MB3.软件的概述 47.1MB4.该软件与Android就业 38.