Android实现H5点击打开app或跳转指定界面

 

有时候为了方便用户在H5界面上直接下载app或者打开手机app,我们会在H5界面上添加一个按钮,点击按钮可以实现下载或者打开app的功能。关于下载功能这里不做叙述,这里主要讲述打开app并跳转到指定界面的业务如何实现。

规则
    <scheme>://<host><pathPrefix>?<自定义参数>
这样写可能大家看不大懂,没事,我们接着往下看。

关键代码
1.AndroidManifest中加入intent-filter:
    <activity
            android:name=".view.login.WelcomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <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:scheme="android" android:host="h5" android:pathPrefix="/open"/>
            </intent-filter>
        </activity>
我们要在拥有android:name="android.intent.action.MAIN参数的界面下新增一个intent-filter

   <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:scheme="android" android:host="h5" android:pathPrefix="/open"/>
    </intent-filter>
至于为什么要在android:name="android.intent.action.MAIN参数的界面下新增而不是其他界面,这应该不需要多做叙述了吧,想必android:name="android.intent.action.MAIN参数的作用大家都懂。

2.参数描述:
android:scheme="android"    用来辨别启动的app
android:host="h5"           可以当成是一个域名,这边建议使用应用的包名
android:pathPrefix="/open"  参数路径前缀
如果你要传递type=1,id=7这两个参数的话,在H5中展示效果应该是:

    <a href="android://h5/open?type=1&id=7">打开看看</a>
3.接收参数:
        Intent intent = getIntent();
        String action = intent.getAction();
        String type= null;
        String id = null;
        if (Intent.ACTION_VIEW.equals(action)) {
            Uri uri = intent.getData();
            if (uri != null) {
                type = uri.getQueryParameter("type");
                id = uri.getQueryParameter("id ");
            }
        }
4.建议:
实际开发过程中,如果直接从WelcomeActivity跳转到指定界面的话,返回的时候可能会直接退出应用(我开发的若干个应用中WelcomeActivity界面在跳转其他界面后都会直接关闭。)如果是在指定页面的返回操作中去启动HomeActivity的话,可能效果上不是很理想,因为大多数应用的首页都是相对复杂的,初始化操作都会比较耗时。

所以,我的个人建议是通过发送EventBus粘性事件给首页,然后在首页里面做相对应的业务跳转逻辑,这样就不影响正常的业务逻辑,而且改动起来也简单一些。

欢迎大家留言指出我的不足。
 

转载:https://blog.csdn.net/weixin_34111790/article/details/87403874

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值