-
2019-11-14 12:23:11
window.client // 是个对象,是安卓注入到JS中的,安卓中所有向JS暴露的方法都在里面 let android = window.client; // 将注入对象赋给变量 android.test(param1, param2) // 调用的函数,且传参给安卓。参数的数据类型必须和安卓定义的一致 let returnValue = android.test(param1, param2) // 接收安卓的返回值,如果是要封装,记得加return,不然一直都是undefined
更多相关内容 -
Kotlin实现Android与js的互调,js调用安卓方法获得数据然后传回js,做逻辑操作
2019-03-13 11:53:23Android和js的交互主要分为三种:1,安卓调用js的方法。2,js调用安卓的方法。3回调,即js调用安卓的方法获得数据,然后数据回传给js,js做业务处理。如有疑问可以看博客:... -
在uniapp中调用安卓方法
2020-08-24 09:49:15最近项目中要使用一个在线识别车牌的功能,由于公司不想出钱,被迫只能找免费开源的工具实现,发现HyperLPR非常好用,但是只能用于安卓,所以就想到在js中调用安卓。由于项目是用uniapp编写的,所以在此只讲关于...最近项目中要使用一个在线识别车牌的功能,由于公司不想出钱,被迫只能找免费开源的工具实现,发现HyperLPR非常好用,但是只能用于安卓,所以就想到在js中调用安卓。由于项目是用uniapp编写的,所以在此只讲关于uniapp的功能。
说下具体实现功能的步骤(安卓代码在此不多说,因为本人只做js开发,安卓是请的朋友代做的哦)
在项目中引入安卓的方法,调用安卓的方法,方法名要跟安卓沟通好,让他提前告诉你`
第二部打包成本地静态资源
等待打包完成后将
__UNI__0E4A911文件整个给安卓,安卓中要将文件放在如图的目录下
这里有个地方要注意,一定要将前端项目的appid填写到data中dcloud_control.xml文件下保持一致
贴一个demo
https://gitee.com/mzbzy/disceenrn.git -
Android:JS调用安卓方法介绍
2016-09-19 17:59:11Android:JS调用安卓方法介绍标签(空格分隔): android jsAndroidJS调用安卓方法介绍 1创建提供给JS调用的方法 2在JS中调用方法 3将对象传递个JS代码 Demo 1,创建提供给JS调用的方法 @android.webkit....Android:JS调用安卓方法介绍
标签(空格分隔): android js
1,创建提供给JS调用的方法
@android.webkit.JavascriptInterface fun showToast(name: String) { Toast.makeText(this, name, Toast.LENGTH_SHORT).show() }
给方法声明
@android.webkit.JavascriptInterface
后表明该方法允许JS代码调用2,在JS中调用方法
<!DOCTYPE html> <html> <head> <meta http-equiv="Content_Type" content="text/html;charset=utf-8"/> <title>Js调用Android</title> </head> <body> <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/> </body> </html>
这里调用了上面提供的
showToast
方法3,将对象传递个JS代码
val settings = mmWebView.settings settings.javaScriptEnabled = true mmWebView.addJavascriptInterface(object, "myObj")
第一句取出WebView的设置对象,第二句允许执行JS代码,第三句发送方法所在的对象,并将方法命名为myObj
Demo
class MiniBrowserActivity : AppCompatActivity() { val js = """ <!DOCTYPE html> <html> <head> <meta http-equiv="Content_Type" content="text/html;charset=utf-8"/> <title>Js调用Android</title> </head> <body> <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/> </body> </html> """ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_mini_browser) val settings = mmWebView.settings settings.javaScriptEnabled = true mmWebView.addJavascriptInterface(this, "myObj") mmWebView.loadData(js, "text/html;charset=utf-8", "utf-8") } @android.webkit.JavascriptInterface fun showToast(name: String) { Toast.makeText(this, name, Toast.LENGTH_SHORT).show() } }
-
三步搞定:Vue.js调用Android原生操作
2020-11-19 19:11:33第一步: Android对Js的接口,新建AndroidInterfaceForJs.js import android.content.Context; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.support.... -
uniapp 调用原生(android)安卓的方法并接收返回值
2020-12-10 13:17:27需要实现的功能: 点击uniapp页面view,传递参数,调用android原生代码,然后原生代码处理数据,返回到uniapp页面 ...点击调用android原生方法</view> </view> </template> &需要实现的功能:
点击uniapp页面view,传递参数,调用android原生代码,然后原生代码处理数据,返回到uniapp页面
uniapp 代码:
<template> <view class="content"> <view @click="androidNative">点击调用android原生方法</view> </view> </template> <script> // 导入自己定义的插件js // var elitetyc = require('../../common/plugin.js'); export default { data() { return { plugins: elitetyc } }, onLoad() { }, methods: { androidNative(){ this.plugins.CalcNameAddNumFunction( "这段文字是uniapp传过来的", function(result) { uni.showToast({title:JSON.stringify(result),icon:'none',duration:5000}); }, function(result) { uni.showToast({title:result,icon:"none",duration:5000}); } ); } } } </script>
plugin.js
! function(root, factory) { if (typeof exports == 'object' && typeof module != 'undefined') { module.exports = factory() } else if (typeof define == 'function' && define.amd) { define(factory) } else { document.addEventListener('plusready', function(){ // 修改此处为插件命名 注释---1 var moduleName = 'elitetyc'; root.plus[moduleName] = factory() },false); } }(this, function() { //在此处定义自己的方法 注释---2 var _BARCODE = 'elitetyc'; var plugintest = { // 这里定义了一个名叫CalcNameAddNumFunction的方法,传递三个参数,后面两个是回调函数 CalcNameAddNumFunction: function(num, successCallback, errorCallback) { var success = typeof successCallback !== 'function' ? null : function(args) { successCallback(args); }, fail = typeof errorCallback !== 'function' ? null : function(code) { errorCallback(code); }; // 注释---3 var callbackID = plus.bridge.callbackId(success, fail); // 注释---4 return plus.bridge.exec(_BARCODE, "calcMyNameAddNum", [callbackID, num]); } }; return plugintest; });
注释讲解:
- 注释1:这里是定义插件的名称
- 注释2:这里也是插件的名称,可以看到在后面的
plus.bridge.exec(_BARCODE, "calcMyNameAddNum", [callbackID, num]); // 官方讲解有同步与异步,我这里只用了异步 void plus.bridge.execSync( String service, String action, Array<String> args ); service: 插件类别名,对应dcloud_properties.xml的feature name。 action: 调用android端插件方法名称。对应java文件的方法名。 args: 参数列表。 void plus.bridge.exec( String service, String action, Array<String> args ); service: 插件类别名,对应dcloud_properties.xml的feature name。 action: 调用android端插件方法名称。对应java文件的方法名。 args: 参数列表。
- 注释3:回调ID,后面原生代码中会用到,就好像你调用我,我有结果了,我该知道我把数据返回给谁把?这个id就是这个作用
-
注释4:在上面有讲到过,这里需要注意的是前两个参数,第一个参数是插件类别名,后面再原生代码中的dcloud_properties.xml文件中会用到
第二个参数,是android原生代码中的方法名要一致
3.到这里uniapp页面差不多都编写完成了,我们使用android studio导入sdk中的插件项目示例HBuilder-Integrate-AS
安卓代码:
新建一个java文件,并且继承自:StandardFeature ,我写好的代码如下,功能很简单,主要就是为了完成uniapp调用原生,实际的可以根据自己业务来搞
package io.dcloud.simple; import org.json.JSONArray; import io.dcloud.common.DHInterface.IWebview; import io.dcloud.common.DHInterface.StandardFeature; import io.dcloud.common.util.JSUtil; public class ElitetycPluginTest extends StandardFeature { /** * 定义一个方法 将自己的名字加上数字进行返回 * @param pWebview * @param array */ public void calcMyNameAddNum(IWebview pWebview, JSONArray array){ // 获取回调ID String CallBackID = array.optString(0); // 获取参数并计算(这里模拟原生处理) String newstring = "我是原生代码返回::"+array.optString(1); // 构建回传参数 JSONArray newArray = new JSONArray(); newArray.put(newstring); // JSUtil.execCallback(IWebview pWebViewImpl,String pCallbackId,String pMessage,int pStatus,boolean pKeepCallback) // 参数: // pWebViewImpl - webview对象 // pCallbackId - 回调方法ID // pMessage - 回调信息 // pStatus - 回调code值 如:OK、ERROR // pKeepCallback - js层回调function是否要保存 // 第一个参数是当前函数的入参,直接传入, 第二个是根据入参获取的回调id,第三个是回调的数据,是一个json数组 JSUtil.execCallback(pWebview,CallBackID,newstring, JSUtil.OK,false); } }
这里的方法名calcMyNameAddNum需要和plugin.js中的plus.bridge.exec( String service, String action, Array<String> args ); 方法的action参数一致,必须一模一样
修改安卓配置文件:把uniapp打包好的原生代码按官网说的导好,
- 修改dclould_properties.xml ,在里面新建
-
<feature name="elitetyc" value="com.example.H5PlusPlugin.ElitetycPluginTest"/>
然后点击运行即可 就没了
-
JS调用Android方法,向Android方法传递json数据
2014-11-22 11:33:11JavaScript调用Android方法,向Android方法传递json数据。 -
unity调用安卓安装apk文件(androidx)
2020-12-25 13:43:35unity调用安卓方法实现apk文件的安装。使用最新androidx框架。亲测支持安卓7以上。附有安卓源码开发工具android studio4.1, 需要unity2020.2.0以上版本,直接在unity打包安卓即可测试。安装包在根目录下可直接安装... -
安卓android期末考试复习要点.docx
2021-06-28 15:03:54安卓android期末考试复习要点.docx -
H5的js调用安卓的方法
2021-12-07 14:54:43一个应用既有安卓端又有ios端,为了同步时间进度,打算用H5网页替代原生的方法,那么在H5中,网页的返回按钮怎么调用安卓的方法,finish掉Activity呢? 方法1 安卓: // webview的配置 webview.getSettings().... -
h5调用安卓方法
2019-08-14 22:51:00jsSetApp() { var jsonObj = JSON.stringify({ // type:13, shareImgUrl: "", shareDesc: "分享", shareLinkUrl: "http://192.168.0.1... -
用WebView中的JavaScript调用Android中的方法
2022-04-01 15:03:41目录 首先在界面文件中使用WebView控件(activity_...实现效果截图:(html中的控件调用Android里面的方法) 首先在界面文件中使用WebView控件(activity_main.xml): <?xml version="1.0" encoding="u. -
android使用webView,js调用安卓中的方法
2020-06-23 10:50:07关于安卓调用js中的方法,参看我的文章android使用webView,实现和js中的方法调用 在js中调用安卓的原理其实很简单就是用了 “映射+调用” 首先前端的html界面有如下代码: <a onclick="dianwo()">点我</a&... -
H5调用iOS和安卓方法
2022-03-26 15:29:35返回按钮调用iOS和安卓的方法 <van-button class="back" icon="arrow-left" size="normal" @click="back"></van-button> back () { if (window.webkit != undefined) { window.webkit.message... -
uniapp调用android原生方法
2021-08-09 15:47:161.编写安卓端代码 public class ElitetycPluginTest extends StandardFeature { public void calcMyNameAddNum(IWebview pWebview, JSONArray array){ //System.out: ["plus141628493886334","这段文字是uniapp传... -
Unity调用Android原生方法
2020-12-24 16:30:04因公司需要项目需要调用Android的一些东西,看了很多大神的经验,试了不知道多少次终于成功在Unity中调用Android里面的方法了(大笑大笑大笑), 最后总结下加深记忆方便之后项目需要时使用。(笔记是之前做项目的... -
安卓Android源码——强行结束APP进程的方法.zip
2021-10-14 08:55:22安卓Android源码——强行结束APP进程的方法.zip -
Android应用中,内嵌H5页面中(vue)调用Android原生方法
2021-09-17 13:50:58这种情况下,有时候会想要在H5中调用android原生写的的方法(ios暂未实践) h5内调用Android的方法 // 调用android原生定义的方法 (saveWebToken在Android代码中已经定义好),并传入参数 if (window.android &... -
使用C语言开发安卓(android)系统的步骤及方法.doc
2020-03-23 09:13:56安卓一般使用Java开发,重新学习比较麻烦,这篇文档介绍了使用C语言开发安卓(android)系统的步骤及方法,内容比较详细,很有借鉴意义。 -
Vue调用Android的方法
2020-06-29 20:29:141、在vue页面中自己写个按钮,通过点击按钮来调用Android封装好的方法。 <template> <div> <button @click="scan()">点击</button> </div> </template> 2、点击时咱们给... -
react 组件内暴露方法供原生android调用
2022-02-07 10:33:52// 定义方法 const testFunction = (arg) => { alert(`调用成功${arg}`); } useEffect(() => { // 在useEffect中暴露方法到window上。 // ts 中可以这样 (window as any).test = testFunction; -
vmware虚拟机安装安卓Android x86的方法步骤
2020-08-19 04:27:41主要介绍了vmware虚拟机安装安卓Android x86的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
html5唤起原生ios和安卓android app的方法
2017-12-17 09:12:03html5唤起原生ios和安卓android app的方法 -
Android与H5交互相互调用对方的方法
2016-07-21 11:28:18此demo主要完成的是webview中H5调用android中的方法,以及android调用H5方法,也就是Java与js的交互,简单好用。 -
uniapp 调用原生(android)安卓的方法并方法
2021-06-06 17:02:31需要实现的功能:点击uniapp页面view,传递参数,调用android原生代码,然后原生代码处理数据,返回到uniapp页面uniapp 代码:plugin.js注释讲解:注释1:这里是定义插件的名称注释2:这里也是插件的名称,可以看到在... -
android安卓app开发之crosswalk手机浏览器教程嵌入使用方法.zip
2021-01-14 10:54:52android安卓app开发之crosswalk手机浏览器教程嵌入使用方法.zip -
Android调用链追踪方法
2020-05-12 16:23:52开启debuggable 修改AndroidManifest.xml,添加android:debuggable=“true” 修改系统ro.debuggable的属性 ./mprop ro.debuggable 1(部分手机无效) 下载...开启跟踪方法按钮 再次点击该按钮即可停止追踪。 分析工具 -
Android实现调用震动的方法
2021-01-05 09:58:12本文实例讲述了Android实现调用震动的方法。分享给大家供大家参考,具体如下: 调用Android系统的震动,只需要一个类 那就是Vibrator ,这个类在hard包中,一看系统级的服务,又要通过manifest.xml文件设置权限了 &... -
JS或TS调用原生Android的方法
2020-09-26 21:59:14JS调用Android方法,Ts调用android方法,H5App混合开发JS或TS调用原生方法,JS调用原生,TS调用原生 -
Android中获取IMEI码的方法
2021-01-04 12:53:591.加入权限在manifest.xml文件中要添加 <uses android:name=”android.permission.READ_PHONE_STATE”>2.代码 代码如下:package net.sunniwell.app; import android.app.Activity; import android.os.Bundle; ...