Android(安卓)js交互 与 Html启动App
16lz
2021-12-26
最近项目刚好有做到内部HTML页面跳转原生页面和html代码启动App页面的功能,做完之后觉得相关知识可以整理一下
先说下项目所用到的js交互
android调取JS的方法
WebView直接加载js的方法就好了
代码如下
WebView.loadUrl("javascript:function(arg)")
html调用Android原生方法
//重点实现代码WebView.addJavascriptInterface(Object object,String name)
Objcet 对象是自己创建的对象,整体代码如下
public class AndroidJs{ @JavascriptInterface public void test(){}}//webview codeWebView.addJavascriptInterface(new AndroidJs(),“AndroidJs” )//html codewindow.AndroidJs.test()
外部HTML启动APP页面
使用Scheme方案设置
在AndroidManifest.xml文件中对应的页面标签添加如下
<activity android:name="..."><intent-filter> <action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="hostName" android:path="path" android:scheme="schemeName" />intent-filter>activity>
Android Develop 标签 官方文档
Html代码调用如下
<a href = "schemeName://hostName/path">//需要带参数的和http链接的get请求一样<a href = "schemeName://hostName/path?id=1&name=mark">
带参数的调用 在Activity中的获取方式
String action = getIntent().getAction();if(!TextUtils.isEmpty(action)&&Intent.ACTION_VIEW.equal(action)){Uri uri = getIntent().getData();if(uri != null){ String id = uri.getQueryParameter("id"); String name = uri.getQueryParameter("name");}}
自定义WebView处理scheme格式链接
public void loadUrl(String url){ if(isSchemeUrl(url)){ Intent intent = new Intent(); intent.setData(Uri.parse(url)); startActivity(intent); }}private boolean isSchemeUrl(String url) { if (TextUtils.isEmpty(url)) return false; String[] strs = url.split("://"); if (strs.length > 1) { String host = strs[0]; if (host.equalsIgnoreCase("http") || host.equalsIgnoreCase("https")) return false; else return true; } else return false;}
一上是本人在处理Android JS交互 和 html启动APP的一些心得,如有问题,请各位留言
更多相关文章
- Android商城购物车页面实现和逻辑实现
- 基于Android平台的Web服务技术研究
- 【Android(安卓)UI设计与开发】第15期:顶部标题栏(六)实现悬浮式顶
- 浅谈Android(安卓)动画,带你进入动画的世界
- Android调用WebService之服务端实现(一)
- Android(安卓)AIDL机制范例解析
- Android代码里或者XML设置android:clickable="false"无效。点击
- Android高手进阶教程(八)之----Android(安卓)Widget开发案例(世
- Android(安卓)AsyncTask