当前位置:首页 » 安卓系统 » androidjs交互

androidjs交互

发布时间: 2022-05-06 17:02:34

① android与js交互的框架有哪些

第一步:
mainfest.xml中加入网络权限

[java] view plain
<uses-permission android:name="android.permission.INTERNET" />
第二步:

加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。

[html] view plain
<body>
<a>js中调用本地方法</a>
<script>

function funFromjs(){
document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
}
var aTag = document.getElementsByTagName('a')[0];
aTag.addEventListener('click', function(){
//调用android本地方法
myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");
return false;
}, false);
</script>
<p></p>
<div id="helloweb">

</div>
</body>

第三步:

实现android工程与js交互的相关代码
android主题代码:

[java] view plain
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
initViews();

//设置编码
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//设置背景颜色 透明
mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
//设置本地调用对象及其接口
mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");
//载入js
mWebView.loadUrl("file:///android_asset/test.html");

//点击调用js中方法
mBtn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mWebView.loadUrl("javascript:funFromjs()");
Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();
}
});

}
js调用的android对象方法定义

[java] view plain
public class JavaScriptObject {
Context mContxt;
@JavascriptInterface //sdk17版本以上加上注解
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}

public void fun1FromAndroid(String name) {
Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
}

public void fun2(String name) {
Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show();
}
}

② Android-webview和js脚本语言交互的时候怎么获取js方法的返回值

方法:

1、通过webview访问js脚本

2、js脚本再调用webview中的java函数把结果返回

示例代码:

通过本地的webview打开脚本页面。

调用步骤

1、设置webview支持脚本

webSettings.setJavaScriptEnabled(true);

2、打开脚本页面

mWebView.loadUrl("file:///android_asset/demo.html");//这里打开该app的asset目录下的demo.html,里面含有wave函数脚本

3、调用脚本

mWebView.loadUrl("javascript:wave()");//调用打开页面中的wave函数

4、webview中建立js能够访问

mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");//js可以通过demo访问到DemoJavaScriptInterface类中的方法。
{
DemoJavaScriptInterface(){
}
publicvoidclickOnAndroid(Stringresult){
System.out.prinltn("返回的结果"+result);
}
}

5、js访问webview方法

<scriptlanguage="javascript">
functionwave(){
alert("1");
window.demo.clickOnAndroid('结果1');//返回结果,调用java方法
}
</script>

③ android与js交互实现什么功能

第一步:
mainfest.xml中加入网络权限

[java] view plain
<uses-permission android:name="android.permission.INTERNET" />
第二步:

加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。

[html] view plain
<body>
<a>js中调用本地方法</a>
<script>

function funFromjs(){
document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
}
var aTag = document.getElementsByTagName('a')[0];
aTag.addEventListener('click', function(){
//调用android本地方法
myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");
return false;
}, false);
</script>
<p></p>
<div id="helloweb">

</div>
</body>

第三步:

实现android工程与js交互的相关代码
android主题代码:

[java] view plain
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
initViews();

//设置编码
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//设置背景颜色 透明
mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
//设置本地调用对象及其接口
mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");
//载入js
mWebView.loadUrl("file:///android_asset/test.html");

//点击调用js中方法
mBtn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mWebView.loadUrl("javascript:funFromjs()");
Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();
}
});

}
js调用的android对象方法定义

[java] view plain
public class JavaScriptObject {
Context mContxt;
@JavascriptInterface //sdk17版本以上加上注解
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}

public void fun1FromAndroid(String name) {
Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
}

public void fun2(String name) {
Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show();
}
}

④ 原生APP中js怎样与Android和ios进行交互

一、对于Android和ios我们要执行不同的操作,下面是判断系统的js代码
// alert(ismobile(1)); 1表示Android,0表示ios
function ismobile(test){
var u = navigator.userAgent, app = navigator.appVersion;
if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){
if(window.location.href.indexOf("?mobile")&lt;0){
try{
if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){
return '0';
}else{
return '1';
}
}catch(e){}
}
}else if( u.indexOf('iPad') &gt; -1){
return '0';
}else{
return '1';
}
}
二、js调用app端函数,下面是js代码
if(ismobile(1)==1){
Android.setTypeActivity(id,type,href);
}else{
jsToios(id,type,href);
}
setTypeActivity是Android端定义的函数,jsToios是ios端定义的函数,括号里是js端传递的参数。
三、至于js端怎样获取app端的数据,只需在js端提供给app端函数名字,在通知app端调用即可
四、还有一种方法可以不通过app的方法将数据传递给另一个页面,那就是通过URL的方式
在本页面将数据拼接在ip后面
在另外一个页面通过下面方法获取URL后的参数
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=decodeURIComponent(strs[i].split("=")[1]);
}
}
return theRequest;
}
// 获取URL参数
var Request = new Object();
Request = GetRequest();
var name;
name = Request['name'];

⑤ js怎么跟Android和ios进行交互

<script>
function view(id){
//alert(id);
myjs.passIdToApp(id);
// passIdApp(id);
}
< /script>

*******************************************************我是分割线****************************************************************

NSString *htmlPath=[[NSBundle mainBundle] resourcePath];
htmlPath=[htmlPath :@"Test.html"];
NSURL *localURL=[[NSURL alloc]initFileURLWithPath:htmlPath];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:localURL];

[self.mywebview loadRequest:request];
JSContext *context = [self.mywebview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"myjs.passIdToApp"] = ^() {
NSLog(@"Begin Log");
NSArray *args = [JSContext currentArguments];
for (JSValue *jsVal in args) {
NSLog(@"%@", jsVal);
NSString *proctID= [NSString stringWithFormat:@"%@",jsVal];
[self.navigationController pushViewController:[[Details_VC alloc]initWithProctID:proctID] animated:YES];
}
// JSValue *this = [JSContext currentThis];
NSLog(@"-------End Log-------");
};

*******************************************************我还是分割线****************************************************************

如果只调用passIdApp(id); 但是如果改成了myjs.passIdApp(id);就无法获取数据了

⑥ reactnative中android与js只进行数据交互该怎么做

作者:hi大头鬼hi
链接:https://zhuanlan.hu.com/p/20464825
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

先来看一个简单的demo,如何在RN中调用Android原生的的Toast模块。
index.android.jsvar React = require('react-native');
var {
ToastAndroid,
} = React;
...
ToastAndroid.show('This is a toast with short ration', ToastAndroid.SHORT)

index.android.js是ReactNative的入口文件,后缀Android表示是在Android平台使用的代码。ReactNative内置了babel,所以可以使用最新的JavaScript语法来开发(ECMAScript6简称es6),不熟悉es6的同学可以看看阮一峰写的这本[e6入门教程](ECMAScript 6入门)。这里我简单介绍一下require,Android程序员可以把require对应到Java的import,使用来导入一个JavaScript模块的。`var {ToastAndroid} = React`这种写法叫结构赋值,就是从React这个对象中,提取出ToastAndroid这个属性所对应的值,并赋值给ToastAndroid这个变量。可以看出toast模块就是从react-native这个模块中的ToastAndroid属性,js中的Toast模块API和Android中的JavaAPI基本是保持一致的。

⑦ android js交互为什么进两次方法

方法一:js注解
先上js脚本(代码来自网络):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<script type="text/javascript">
//java代码调用js方法
function javacalljs(){
document.getElementById("content").innerHTML +=
"<br\>java调用了js函数";
}
</script>
</head>
<body>

⑧ 安卓和javascript交互必须通过webView吗可以用安卓的其他控件调用js吗还有他们能通过volley交互吗

您好,很高兴能帮助您, Android中webview和js之间的交互 1.android中利用webview调用网页上的js代码。 Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示: mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("javascript:test()"); 2. 网页上调用android中java代码的方法 在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示: mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show(); } }); } }, "demo"); 在网页中,只需要像调用js方法一样,进行调用就可以 <div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div> 3. Java代码调用js并传参 首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示: mWebView.loadUrl("javascript:test('aa')"); 4.Js中调用java函数并传参 首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示: mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid(final int i) { mHandler.post(new Runnable() { public void run() { int j = i; j++; Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show(); } }); } }, "demo"); 然后在html页面中,利用如下代码<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>, 即可实现调用 你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”! 如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

热点内容
苹果像素低为什么比安卓好 发布:2025-05-14 19:13:23 浏览:459
安卓机微信怎么设置红包提醒 发布:2025-05-14 19:00:15 浏览:271
androidsystem权限设置 发布:2025-05-14 18:56:02 浏览:970
mq脚本 发布:2025-05-14 18:45:37 浏览:25
仙境传说ro解压失败 发布:2025-05-14 18:45:01 浏览:868
betweenand的用法sql 发布:2025-05-14 18:39:25 浏览:250
tplink摄像头存储卡格式化 发布:2025-05-14 18:37:08 浏览:347
安卓平板怎么安装excel的软件 发布:2025-05-14 18:35:44 浏览:42
广州数控圆弧编程实例 发布:2025-05-14 18:25:00 浏览:401
搭建服务器能使用nodejs开发吗 发布:2025-05-14 18:24:14 浏览:136