永发信息网

android和h5交互,js怎么在android端打印日志

答案:1  悬赏:50  手机版
解决时间 2021-12-29 08:29
android和h5交互,js怎么在android端打印日志
最佳答案
Android和H5之间的交互hybridApp开发也不是什么新鲜事了,其中native和h5之间的交互则是必不可少的。Android中是如何和H5交互的?1、webView加载页面我们都知道在Android中是通过webView来加载html页面的,根据HTML文件所在的位置不同写法也不同://例如:加载assets文件夹下的test.html页面mWebView.loadUrl("file:///android_asset/test.html")//例如:加载网页mWebView.loadUrl("")如果只是这样调用mWebView.loadUrl()加载的话,那么当你点击页面中的链接时,页面将会在你手机默认的浏览器上打开。那如果想要页面在App内中打开的话,那么就得设置setWebViewClient:mWebView.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){mWebView.loadUrl(url);returntrue;}}});2、Android本地通过Java调用HTML页面中的JavaScript方法想要调用js方法那么就必须让webView支持WebSettingswebSettings=mWebView.getSettings();//设置为可调用js方法webSettings.setJavaScriptEnabled(true);若调用的js方法没有返回值,则直接可以调用mWebView.loadUrl("JavaScript:do()");其中do是js中的方法;若有返回值时我们可以调用mWebView.evaluateJavascript()方法:mWebView.evaluateJavascript("sum(1,2)",newValueCallback(){@OverridepublicvoidonReceiveValue(Stringvalue){Log.e(TAG,"onReceiveValuevalue="+value);}});js代码如下:2、js调用Android本地Java方法在Android4.2以上可以直接使用@JavascriptInterface注解来声明,下面是在一个本地Java方法publicclassJsInteration{@JavascriptInterfacepublicStringback(){return"helloworld";}}定义完这个方法后再调用mWebView.addJavascriptInterface()方法:mWebView.addJavascriptInterface(newJsInteration(),"android");那么在js中怎么来调用呢?4、拦截HTML页面中的点击事件mWebView.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){//判断url拦截事件if(url.equals("file:///android_asset/test2.html")){Log.e(TAG,"shouldOverrideUrlLoading:"+url);startActivity(newIntent(MainActivity.this,Main2Activity.class));returntrue;}else{mWebView.loadUrl(url);returnfalse;}}});以上就是Java调用js方法以及js调用Java方法的实现交互方式中的一种。下面给出完整代码:mainActivitypublicclassMainActivityextendsAppCompatActivity{publicstaticfinalStringTAG="MainActivity";privateWebViewmWebView;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mWebView=(WebView)findViewById(R.id.webView);mWebView.loadUrl("file:///android_asset/test.html");WebSettingswebSettings=mWebView.getSettings();webSettings.setJavaScriptEnabled(true);mWebView.addJavascriptInterface(newJsInteration(),"android");mWebView.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){if(url.equals("file:///android_asset/test2.html")){Log.e(TAG,"shouldOverrideUrlLoading:"+url);startActivity(newIntent(MainActivity.this,Main2Activity.class));returntrue;}else{mWebView.loadUrl(url);returnfalse;}}});}//Android调用有返回值js方法@TargetApi(Build.VERSION_CODES.KITKAT)publicvoidonClick(Viewv){mWebView.evaluateJavascript("sum(1,2)",newValueCallback(){@OverridepublicvoidonReceiveValue(Stringvalue){Log.e(TAG,"onReceiveValuevalue="+value);}});}publicclassJsInteration{@JavascriptInterfacepublicStringback(){return"helloworld";}}}test.html调用本地方法点击
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泰斗的同义词
从2010年7月开始我一直在公司上班英语
梦见堵车
Believe it or not, one’s personality can
史蒂芬霍金怎么生小孩
已知两个加数的和与其中一个加数,求另一个加
蜜蜂蜇人后为什么会很快死去
单选题2009年10月16日,广州市财政局首开先河
4分之3乘5的意思是什么?5乘4分之3的意思是什
圆通快递 从济南到深圳要多久?
秦朝能够推行“一法度、衡、石、丈尺,车同轨
金立手机为什么老是出现标志金立手机为什么老
卤的偏旁部首是什么
故事变沉默被岁月淹没草书写法
单选题下列关于空气的说法可,错误的是:A.空
推荐资讯
凤村村委会地址在什么地方?想过去办事
律师被批捕之后接的案件怎么办
狗肉的胆固醇含量高吗
一百元繁体字怎么写
勇祥来净水器如何清洗?
南京老门东地铁那个站下
江苏省镇江市烟草专卖局地址在哪?我要去那里
鑫玺痛贴灵怎么代理
方程(3x-1)(2x+1)=1化为一元二次方程的一
铺租2000块每个月,预算3万能开个15平方的饰
尚可是什么意思啊
解释热闹的意思是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?