现在基本所有h5流量都会往自家app导入流量。所以我们常见会发现浏览器打开网页、微信分享文章扥等都有打开app的按钮
1、app代码
<activity
android:name=".AwakenActivity"
<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="h5"
android:pathPrefix="/open"
android:scheme="awaken" />
</intent-filter>
</activity>
2、h5代码
<a href="awaken://h5/open?openType=1&openId=123">打开app</a>
其实就是<a href="scheme://host/pathPrefix?openType=1&openId=123">打开app</a>
3、app逻辑(AwakenActivity)
首先我们需要判断Activity的 action = getIntent().getAction();
其次我们需要判断 if(Intent.ACTION_VIEW.equals(action)) 来判断是否是我们指定的 action
再次我们来获取参数:h5传递过来的参数。
public void startActivityByHtml(){
Intent intent = getIntent();
if (intent != null ){
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Uri intentData = intent.getData();
if (intentData != null){
String openType = intentData.getQueryParameter("openType");
String openId = intentData.getQueryParameter("openId");
//根据openType 跳转指定界面
}
}
}
}
4、微信、QQ分享页面如果跳转app
Android11以后,软件包可见性。
<queries>
<!--微信-->
<package android:name="com.tencent.mm" />
<!--支付宝-->
<package android:name="com.eg.android.AlipayGphone" />
<package android:name="hk.alipay.wallet" />
<!--QQ-->
<package android:name="com.tencent.qqlite" />
<package android:name="com.tencent.mobileqq" />
<!--新浪微博-->
<package android:name="com.sina.weibo" />
</queries>
针对腾讯产品分享,我们只需要在他的商户后台把我们分享页面域名配置上,即可实现分享页面,唤醒app的功能。
5、产品需求往往还会有,指定界面点击返回需求
①:app已打开情况,返回到上一个界面。
②:当app未打开情况,跳转指定界面,需要返回到首页。我们在AwakenActivity界面判断当前主页面是否打开,如果打开跳转指定界面;未打开先跳转主界面,再跳转到指定界面。