美文网首页
H5跳第三方Android应用

H5跳第三方Android应用

作者: Wang_Mr | 来源:发表于2019-01-02 17:03 被阅读0次
本文是用的URL Scheme实现的
h5页面代码:
<!DOCTYPE html>
<html>
  <body>
    <iframe src="share://jianshu.com/news/content?sourceSid=${article.sid}" style="display:none"/>
  </body>
</html>

URI主要分三个部分:scheme、host、pathPrefix。
scheme="share"
host="jianshu.com"
pathPrefix="/news/content"
组成的链接share://jianshu.com/news/content
?key=value&key=value方式进行传递数据
即sourceSid=${article.sid} 则是携带过来的数据

Android

可通过Activity的onCreate()方法来获取携带的值

// app跳转与h5跳转,取sourceSid
String sourceSid = getIntent().getStringExtra(sourceSid);
if (TextUtils.isEmpty(sourceSid)) {
    // 通过h5网页调起app
    Intent mgetvalue = getIntent();
    String maction = mgetvalue.getAction();
    if (Intent.ACTION_VIEW.equals(maction)) {
        Uri uri = mgetvalue.getData();
        if (uri != null) {
            // 通过URL获取value
            sourceSid = uri.getQueryParameter("sourceSid");
        }
    }
} else {
    // app内部跳转过来
}

AndroidManifest设置滤器

<activity
    android:name=".NewsActivity"
    android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
    android:launchMode="singleTask"
    android:theme="@style/AppTheme.ShareStyle">

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <!--下面所设置的值需要和html端一致(不要出现大写字母)-->
            <!--在data里设置了 scheme和host,则该Activity可以接收和处理类似于 "share://jianshu.com/news/content"的链接-->
            <data
                android:host="jianshu.com"
                android:pathPrefix="/news/content"
                android:scheme="share" />
            </intent-filter>

</activity>

当App未启动时,点击H5跳转App时会出现白色页面(是否是白色和设置的主题有关,Application-onCreate()...)然后再进入详情页面,会给人一种延迟卡顿感。
设置theme 在延迟的这段时间内展示欢迎图片,可以设置为单独的Activity也可以设置为全局

<style name="AppTheme.ShareStyle" parent="AppTheme.NoActionBar">
    <item name="android:windowBackground">@mipmap/welcome</item>
</style>
后记:

一般都是用App分享链接到微信、QQ的。
而微信、QQ的浏览器屏蔽了iframe,所以不能点击分享的链接直接打开App了。
H5可通过给button设置链接方式:
< a href="share://jianshu.com/news/content?sourceSid=${article.sid}">App内打开</ a>
然而微信屏蔽了URL Scheme,通过判断是微信浏览器则显示给用户提示:让其用浏览器的方式进行打开,然后再通过在浏览器跳转App。

相关文章

网友评论

      本文标题:H5跳第三方Android应用

      本文链接:https://www.haomeiwen.com/subject/xgwzlqtx.html