html call android apk的方法汇总
现在很多应用都是混合型的,遇到一些Html页面开启APK的场景。那么Html调用android有哪些方法呢?
1.如果是自己开发的浏览器APP,那么html页面用js直接和android java进行交互就可以实现。
2.如果是默认的系统浏览器访问html,那么可以选择:
html js:window.location.herf="www.eg.com"
A:
<activity android:name=".DetailActivity" > <intent-filter > <data android:scheme="http" />
android:host="www.eg.com"
android:pathPrefix="/someresource/" <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
可以看到,android是从intent的配对进制来进行过滤和选择的,其中和链接对应的地址我们有两个选择,custom scheme可以是网址的形式,比如www.example.com或者是自定义的内容,比如my.custom.scheme。
这种方法和ios端html call app的做法非常相似,html部分可以保持代码一致。
自定义的内容,关联很强,用户点击链接只会打开scheme吻合的APP,其中intent机制起过滤作用,地址要完全吻合host,pathPrefix等过滤条件。http的通用scheme不能保证直接开启到你的APP,可能会显示不同的应用选择弹窗。
自定义内容可能因为安全性的原因,在4.4版本测试的时候,window.location.herf不能开启APP,用户手动点击链接却可以。
链接地址的传参可以用www.eg.com/read?param1=xxx¶m2=xxx进行传递。java端getIntent.getData 获取到Uri之后进行解析参数。
B:android自己独特的方法:
html:
<a href="intent:#Intent;action=com.appname.CUSTOM_ACTION;S.para1=123456;i.number=4;end">click to open</a>
java:
<activity android:name=".MyActivity" android:screenOrientation="sensorLandscape" > <intent-filter> <action android:name="com.appname.CUSTOM_ACTION" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity>
intent 自定义的URI格式如下
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;
参数的声明格式为type.varName的方式,分号;连接
<type>.<key>=<value>
S =String
B =Boolean
b =Byte
c =Character
d =Double
f =Float
i =Integer
l =Long
s =Short
比如S.str=sss;i=123;
adb 命令行debug的方法:
adb shell am start -a android.intent.action.VIEW -d "http://example.com/gizmos" com.example.android
其中-a -d -c 等分别代表action data category