本文目录一览:
- 1、android中用javascript吗
- 2、js的框架能用到android开发中吗?比如echart,moment,art template....
- 3、安卓手机有没有浏览器支持javascript的,在电脑上编写了一个alert弹出框,可以再手机上用吗?会弹出来吗?
- 4、安卓12能用auto.js吗
android中用javascript吗
Android之如何使用javascript调用android代码
使用javascript调用android代码
1.使用webview对象的addJavascriptInterface方法
2.addJavascriptInterface方法有两个参数,第一个参数就是我们一般会实现一个自己的类,类里面提供我们要提供给javascript访问的方法;第二个参数是访问我们在obj中声明的方法时候所用到的js对象,调用模式为window.interfaceName.方法名()或者是javascript: interfaceName.方法名() ;,如myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");
3.编写JavaScriptinterface类,如有一个函数名为showToast()的方法
4.在html中调用时的形式:javascript:android.showToast()。
附上一个小例子:
import android.content.Context;
import android.widget.Toast;
public class JavaScriptinterface {
private Context mContext;
/** Instantiate the interface and set the context */
public JavaScriptinterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private WebView myWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myWebView = (WebView) findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new JavaScriptinterface(this),
"android");
String htmlText = getFromAssets("test.html");
//把myWebView加载html
myWebView.loadData(htmlText, "text/html", "utf-8");
myWebView.setWebViewClient(new myWebViewClient());
}
// 此按键监听的是返回键,能够返回到上一个网页(通过网页的hostlistery)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public String getFromAssets(String fileName) {
try {
InputStreamReader inputReader = new InputStreamReader(
getResources().getAssets().open(fileName));
BufferedReader bufReader = new BufferedReader(inputReader);
String line = "";
String Result = "";
while ((line = bufReader.readLine()) != null)
Result += line;
if (bufReader != null)
bufReader.close();
if (inputReader != null)
inputReader.close();
return Result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
}
}
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""
html xmlns="" xml:lang="zh-CN" dir="ltr"
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /
script type="text/javascript"
function showAndroidToast(toast) {
javascript:android.showToast(toast);
}
/script
/head
body
input type="button" value="Say hello"
onClick="showAndroidToast('Hello Android!')" /
/body
/html
android的应用程序中,可以直接调用WebView 中的javascript 代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
public class MainActivity02 extends Activity {
/** Called when the activity is first created. */
private WebView webView;
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
webView=(WebView) this.findViewById(R.id.webView);
button=(Button) this.findViewById(R.id.button);
WebSettings setting=webView.getSettings();
//设置支持javascript
setting.setJavaScriptEnabled(true);
//增加接口方法,让html页面调用
webView.addJavascriptInterface(new Object(){
//这里我定义了一个拨打的方法
public void startPhone(String num){
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+num));
startActivity(intent);
}
}, "demo");
//加载页面
webView.loadUrl("");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
webView.loadUrl("javascript:show('activity传过来的数据')"); //调用javascript函数
/*
* 通过webView.loadUrl("javascript:xxx")方式就可以调用当前网页中的名称
* 为xxx的javascript方法
*/
}
});
}
}
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
titleInsert title here/title
script type="text/javascript"
function show(content){
document.getElementById("countent").innerHTML=
"这是我的javascript调用. 这是:"+content;
}
/script
/head
body
table align="center"
trtd姓名/tdtd电话/td/tr
trtd小明/tdtda href="javascript:demo.startPhone(123)"123/a/td/tr
trtd小王/tdtda href="javascript:demo.startPhone(456)"456/a/td/tr
/table
p id="countent"html原始数据/p
/body
/html
js的框架能用到android开发中吗?比如echart,moment,art template....
可以,android通过webview直接调用本地html网页。html网页要放在assets目录下面。
如果您的这些js框架在服务器端,直接使用webview loadurl方法就ok,关于访问android与js互相调用的demo,请去应用宝搜索安卓无忧就可以。度娘不让发链接,一发就删除我的回答。太2了。
安卓手机有没有浏览器支持javascript的,在电脑上编写了一个alert弹出框,可以再手机上用吗?会弹出来吗?
现在的安卓手机的浏览器几乎都是可以直接浏览普通网页(非WAP网页)的,而且都是支持Javascript的(事实上Javascript已经是目前为止唯一的网页前端脚本语言了)。当然,浏览器中一般都有打开或关闭Javascript功能的选项,但只要是打开的,你用alert弹出的对话框就一定会弹出来,除非有错。
安卓12能用auto.js吗
不能使用。
目前为止的auto.js不能在12系统中使用。
可以等JS更新至可以使用的版本后在使用。