轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 微端制作 查看主题

Android通过微端打开app页面并且传递值

发布者: 星星 | 发布时间: 2017-12-8 05:40| 查看数: 1636| 评论数: 1|帖子模式

最近公司有个需求,要求从第三方网页端打开一个网页,然后在网页中点击“下载”,“打开”按钮,在app端进行下载和打开操作。这里记录下方法。

首先,网页和app页面进行交互,其实会很快想到JS交互,但是现在需要在第三方微端中,那就没法拿到Webview,也就没法js互交,所以这里android也提供有方法。
看一个静态页面(html):

<BODY>
    <a href="hjz://com.zjmk.hjz_progressmotirx/openwith?gameid=12007&pk_name=com.surfing.android.tastyfood">启动应用程序</a> 
    </p></br></p>
    <a href="hjz://com.zjmk.hjz_progressmotirx/down?apkurl=黄金指&memo=这是一款牛逼的手赚软件&gameid=12007&pk_name=com.surfing.android.tastyfood">启动应用程序下载页面</a>
 </BODY>

我们看看href里面的组成:
- hjz://:这里的hjz://是“scheme”。
- com.zjmk.hjz_progressmotirx:这个是“host”。
- /down:这个是方法名前缀“pathPrefix”。
- apkurl=….&pkname=…:这个是传递的参数。

看到以上代码可能还是不是很明白这些有什么用,那么接着往下看….
看android端:
其实在android里面的项目清单住处的Activity下面可以添加很多数据节点,如 ,,,….

<activity android:name=".OpenapkActivity"
            android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar">
             <intent-filter>  
                <action android:
                name="android.intent.action.VIEW"/>  
                <category android:
                name="android.intent.category.DEFAULT" />  
                <category 
                name="android.intent.category.BROWSABLE" />  
                <data 
                android:scheme="hjz" android:host="com.zjmk.hjz_progressmotirx" android:pathPrefix="/openwith"/> 
            </intent-filter>
        </activity>

看这个activity注册,在其下面添加了几个数据节点,action,category,data。看来data里面的数据应该就很明白了,data节点里面的数据都是和我们网页相对应的,如
scheme=”hjz”,//协议
host=”com.zjmk.hjz_progressmotirx”;//主机
pathPrefix=”/openwith”;//方法前缀

只有先对应才能正确的启动页面。

在activity中获取数据:

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.openapklayput);
        Intent intent=getIntent();
        String action = intent.getAction(); 
        if(Intent.ACTION_VIEW.equals(action)){  
            Uri uri =intent.getData();  
            if(uri != null){ 
                //根据属性值获取数据
                String gameid=
                       uri.getQueryParameter("gameid");
                String pkname=
                       uri.getQueryParameter("pk_name");
                    PackageManager packageManager =                 
                                     getPackageManager();
                Intent intent2=new Intent();
                intent2 =packageManager
                       .getLaunchIntentForPackage(pkname);
                startActivity(intent2); 
                Intent intent1=
                    new Intent(this,MotirxServices.class);
            }  
        }
    }

……到这里可以完成第三方微端和自己app应用的交互在跳过WebVIew的情况下,但是这里可能会有一个悲催的事情,就是他的兼容性。在369获取猎豹微端中href=“”;这里在scheme前面自动加上http://…..
这里就导致不能正常的打开我们指定的app页面。系统内置微端肯定是可以的,只是第三方微端可能存在这个问题,不过我的手机测试基本都可以,没问题。

最新评论

琓啭迣鎅 发表于 2022-5-5 05:56
怎么从网页源代码下载音乐

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表