【荣耀智慧服务】快捷服务开发指南

【荣耀智慧服务】快捷服务开发指南

    荣耀快捷服务是荣耀智慧服务的快捷入口之一,用户点击负一屏 > 我的服务 > 最右侧“更多”按钮,拖到想要添加的图片到“自定义服务”中,即可在快捷服务列表页面中,将想要添加的快捷服务卡片。快捷服务因丰富多样、方便快捷的特点,广受用户和开发者青睐。

【荣耀智慧服务】快捷服务开发指南_第1张图片

    快捷服务主要通过开发者提供每个服务deeplink进行跳转,服务以图标或文字链接方式呈现,用户点击服务通过deeplink跳转到APP或者RPK内某个指定页面,方便、便捷。

1. Android Deeplink 开发指南

Deep Linking(译:深度链接)它的实现原理,是使用Uri Scheme协议来实现。

1.1 Deep Linking能做什么

1.1.1 它可以唤起指定应用并向其传递数据,根据传递的数据显示特定内容页的详细信息;

1.1.2 它不再受制于应用,只通过一个链接便可唤起应用并跳转到指定页面;

1.1.3 它使应用之间产生了联系,使应用不再孤立存在;

1.1.4 它优化了用户体验,这一点是它最终要达到的目的。

 

1.2 官方解释

当单击链接或编程请求调用Web URI意图时,Android系统按顺序依次尝试以下每一个操作,直到请求成功为止:

1.2.1 打开用户首选的应用程序,它可以处理URI,如果指定的话。

1.2.2 打开可以处理URI的唯一可用应用程序。

1.2.3 允许用户从对话框中选择应用程序。

官方文档:https://developer.android.com/training/app-links/deep-linking

 

2. URL Scheme 协议格式

scheme://host/path:port/path?query1=xxxx&query2=xxxx

例如:

deeplinkapp://com.mytest.deeplink:8080/deeplinkDetail?param1=test

上面包含了 scheme、host、port、path、query。

deeplinkapp:代表该 Scheme 协议名称(scheme)。

com.mytest.deeplink:代表 Scheme 作用于哪个地址域(host)。

8080:代表路径端口号(port)。

deeplinkDetail:代表 Scheme 指定的页面(path)。

param1:代表传递的参数名称(query)。

 

3. 使用 DeepLink

3.1 修改manifest文件

我们需要在清单文件 manifest 中对于要开放给外部的activity添加 intent-filter。配置如下:

<activity

      android:name=".******Activity">

        <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:scheme="deeplinkapp"-->

              android:host="****"   < !—如android:host="com.mytest.deeplink"-->

              android:port="****"   < !—如android:port="8080" -->

              android:path="****"   < !—如android:path="deeplinkDetail" -->

              />

        < /intent-filter>

 < /activity>

 

3.2 代码处理

在对应 Activity 中的添加逻辑处理代码:

               if (getIntent() != null && getIntent().getData() != null)

               {

               Uri uri = getIntent().getData();

                   // 完整的url信息

                   String url = uri.toString();

                   // scheme部分

                   String scheme = uri.getScheme();

                   // host部分

                   String host = uri.getHost();

                   //port部分

      int port = uri.getPort();

                   // 访问路径

                   String path = uri.getPath();

                   // Query部分

                   String query = uri.getQuery();

                   //获取指定参数值

                   String param1= uri.getQueryParameter("param1");

       }

 

4. 测试

4.1 使用 adb 命令

               $ adb shell am start -a android.intent.action.VIEW –d

               例如:

               adb shell am start -a android.intent.action.VIEW –d deeplinkapp://com.mytest.deeplink:8080/deeplinkDetail?

               param1=test com.mytest.deeplink

 

4.2 使用web打开

替换deeplink.html中的deeplink地址,拷贝文件到手机,使用浏览器打开html即可

Deeplink.html:

DOCTYPE html>

<html>

<head>

    <title>deeplink testtitle>

head>

<body>

    <a href="deeplinkapp://com.mytest.deeplink:8080/deeplinkDetail?param1=test">打开APPa>

body>

<html>

 

5. Apk和Rpk的deeplink查询或获取方法

5.1 Apk(Android)的deeplink查询或获取方法

5.1.1 请跟产品经理或者开发人员确认应用的页面已经支持deeplink。

Deeplink格式如下:

[scheme]://[host]/[path]?[query]

 

5.1.2 获取应用的AndroidManifest文件,找到对应页面的Activity配置。

示例:

               <activity

                   android:name="com.example.android.GizmosActivity"

                   android:label="@string/title_gizmos" >

                   < intent-filter android:label="@string/filter_view_http_gizmos">

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

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

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

                       < !-- Accepts URIs that begin with "http://www.example.com/gizmos” -->

                       < !-- note that the leading "/" is required for pathPrefix-->

                   < /intent-filter>

                   < intent-filter android:label="@string/filter_view_example_gizmos">

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

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

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

                       < !-- Accepts URIs that begin with "example://gizmos” -->

                       < data android:scheme="example"

                             android:host="testhost"

                             android:pathPrefix="/gizmos" />

                   < /intent-filter>

               < /activity>

 

5.1.3 查看intent-filter标签中的data标签,标签中的scheme和host的值分别对应deeplink中的scheme和host字段。

 

5.1.4 对于path,data标签中共支持path,pathPattern,pathPrefix三种设置方式,其意义分别如下:

Path:指定了完整的path路径,必须跟配置的值完全一样,应用才会处理;

pathPattern:指定了完整path的正则表达式,即传入的path必须满足pathPattern指定的正则表达式应用才会处理;

pathPrefix:指定了path的前缀,即传入的path以pathPrefix的值为前置即可处理;

query代表传入到页面的参数,其为key-value值对,多个参数间用&连接。

 

5.2 Rpk(快应用)的deeplink查询或获取方法

详情参考快应用https://doc.quickapp.cn/tutorial/platform/deeplink.html文档。

Deeplink参数添加方式:

负一屏或其他卡片宿主,通过deeplink或者router.push跳转打开快应用,无论是否有历史留存页面,都可以直接跳转目标落地页,返回可一键返回至宿主应用页面。

5.2.1 原跳转链接无具体页面,只有包名,如:

hap://app/com.freecharge.android.quickapp

则在后面添加hap://app/com.freecharge.android.quickapp/?___PARAM_LAUNCH_FLAG___=clearTask 

 注意:

"/?"都不能少

 

5.2.2 原跳转链接有指定跳转目录,但无跳转参数,如:

hap://app/org.hap.govaffairs/views/HealthQrcode/Result

在后面添加hap://app/org.hap.govaffairs/views/HealthQrcode/Result?___PARAM_LAUNCH_FLAG___=clearTask 

 注意:

"?"不能少

 

5.2.3 原跳转链接本身就有指定跳转目录和跳转参数,如:

hap://app/com.wifi.quickapp.reader.free/Page/Go?path=read&bookid=70317&chapterid=15688960

在后面添加 hap://app/com.wifi.quickapp.reader.free/Page/Go?path=read&bookid=70317&chapterid=15688960&___PARAM_LAUNCH_FLAG___=clearTask

 注意:

"&"不能少

    了解更多详情,欢迎访问荣耀荣耀开发者服务平台官网:https://developer.hihonor.com/

    7 月 20 日 - 10 月 20 日,参与荣耀开发者服务平台注册认证,更多好礼相送。

    官方联系方式:

    官方微信:HONOR_Developer

    官方邮箱:[email protected]
 

你可能感兴趣的:(智慧服务,java,servlet,android)