android调用JS代码

AfterSeptember 2014-05-05 01:40:38
项目要用到这个功能,之前也没搞过,写了一个简单的demo没效果。
就是在android中调用js中的一个函代码如下

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/gg.html");

button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webview.loadUrl("javascript:do()");
}
});
}



html文件如下

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>Test Demo</title>

<p>test</p>
<script language="javascript" type="html/text">

function do(){

alert("Test");

}

</script>

</head>


</html>
...全文
2745 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
驱梦人 2016-07-13
  • 打赏
  • 举报
回复
Android 可以直接引用js文件里的方法吗?还是只能引用html文件的js方法?
drlyee 2014-05-07
  • 打赏
  • 举报
回复
还有一点WebView 原生不支持alert方法,需要改造以后才能支持

/* WebChromeClient must be set BEFORE calling loadUrl! */
webview.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
    {
        new AlertDialog.Builder(myApp)
            .setTitle("javaScript dialog")
            .setMessage(message)
            .setPositiveButton(android.R.string.ok,
                    new AlertDialog.OnClickListener()
                    {
                        public void onClick(DialogInterface dialog, int which)
                        {
                            result.confirm();
                        }
                    })
            .setCancelable(false)
            .create()
            .show();

        return true;
    };
});
webview.loadUrl("file:///android_asset/gg.html");
大概就是这样,到百度再搜下webview alert 有好多解决方案
life169 2014-05-07
  • 打赏
  • 举报
回复

小问题
<script language="javascript" type="html/text"> 
应该换成
<script language="javascript" type="text/javascript"> 
Icehand哥 2014-05-05
  • 打赏
  • 举报
回复
路过。。。。帮你顶顶
未注销 2014-05-05
  • 打赏
  • 举报
回复
引用 1 楼 wuhanchendalong 的回复:
也不说出了什么问题?
对了,请教一下,为什么我在webview里面点击html里的那个button也没有反应?setJavaScriptEnabled(true);是设置可以执行js脚本吧。那应该会弹出对话框啊。
未注销 2014-05-05
  • 打赏
  • 举报
回复
引用 1 楼 wuhanchendalong 的回复:
也不说出了什么问题?
就是没反应啊。点击了button没反应。
wuhanchendalong 2014-05-05
  • 打赏
  • 举报
回复
也不说出了什么问题?
1. 课程介绍Android开发所需要的比较全面的基础知识,原理。这样在随后的课程里或阅读开源的App时能读懂代码。2. 课时的编排使用Google官方的Android Developer CN的分类,删减了对jetpack(Androidx)的相关课题。因为jetpack并不是核心库,国内大部分App都不会使用它。3. 使用Java作为项目例子代码,要学习Android开发,首先得会Java语言,因为Android API的核心代码是用Java编写的,也可以使用Koltin语言,但是当阅读Android源码时会Java语言是绕不过去的。Java代码可以通过Android Studio的菜单 Code - Convert Java File To Kotlin File来转换为Koltin. 4. 主要介绍Android的核心组件,类库. 但是不会详细介绍jetpack的库,因为这个库使用koltin,而且对AS有强依赖,比如升级了AS不得不升级jetpack(androidx)。或者对于低版本的androidx,新版AS干脆不支持;还有就是依赖GMS核心的都不准备讲,只介绍开源的第三方项目,可以发布到华为,小米等国内Android系统的类库。5. 这里只是介绍Android的原生开发,不介绍Flutter,React Native,Hipppy等跨平台框架。选择原生框架的好处就是可以使用系统平台最新的特性,最高的性能,最少的学习成本。当然这些跨平台框架访问系统的一些独有功能还是得通过桥接原生框架调用。Flutter得要学会Dart,Java语言,并且学会它的框架体系API. React Native和Hippy这些H5框架通过JavaScript访问原生功能的框架也得学会JavaScript,还要会Vue,React框架,之后就是Html,Css布局。 这些还需要下载安装开发额外的开发环境。当然它的好处是跨Android,iOS两个平台。童鞋根据自己的项目要求进行取舍。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧