• 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&param2=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 

  • 相关阅读:
    Delphi XE2 之 FireMonkey 入门(13)
    Delphi XE2 之 FireMonkey 入门(12)
    Delphi XE2 之 FireMonkey 入门(11)
    svn泄漏敏感信息利用方式
    提取windows用户明文密码
    firefox中outlook.com页面卡顿的原因
    漏洞的定义
    Hydra--密码破解的神器
    数据库设计那些事(数据库范式)
    数据库范式
  • 原文地址:https://www.cnblogs.com/bluelife/p/4286770.html
Copyright © 2020-2023  润新知