Huawei Share 作为跨设备传输文件的解决方案,通过蓝牙实现设备之间发现及连接鉴权,建立P2P Wi-Fi通道,实现华为手机与三方设备间文件互传。在第三方设备处理能力及传输环境有保障的情况下,稳定传输速度超过80MB/s。
Huawei Share能力现已通过深度封装,以极简Engine面向应用APP、智能设备开发者开放。PC、打印机、相机等众多硬件设备均可集成Huawei Share,实现跨设备文件传输。Share Engine提供Android、Linux、Windows 3种SDK开发包,涵盖华为手机应用集成、Android设备集成、Linux设备集成、Windows PC应用集成等主流集成方式,帮助开发者快速集成Huawei Share。在这个Codelab中,主要介绍华为手机应用如何集成Huawei Share功能。实现该程序后,可以支持华为手机应用向其它华为设备发送文件或文本内容。

在这个Codelab中,你将创建Demo Project,并在Demo Project中使用隐式Intent方式调用Huawei Share活动,从而完成Huawei Share服务的整体流程搭建。完成改程序后,将实现华为设备之间的文件或文本内容分享。

示例程序实现效果示意图

您将会学到什么

硬件要求

软件要求

需要的知识点

具体操作,请按照《Share Engine接入准备》中详细说明来完成。

1、配置文件设置。
在app的build.gradle文件中做如下配置:

dependencies { implementation fileTree(dir: 'libs', include: ['*.aar']) implementation 'com.android.support:support-compat:28.0.0' }

由于示例程序运行于华为手机,华为手机已经集成Huawei Share功能,所以示例程序不再需要集成Share Engine SDK包。

另外在把app的build.gradle文件中的minSdkVersion版本改为26,如下图所示:

点击同步工程按钮,进行工程同步,如下图所示:

同步成功后,如下图所示:

2、分享文本内容

private void doStartTextIntent() { String text = shareText.getText().toString(); if (TextUtils.isEmpty(text)) { return; } Intent intent = new Intent(Intent.ACTION_SEND); intent.setType(SHARE_INTENT_TYPE); intent.putExtra(Intent.EXTRA_TEXT, "test text"); intent.setPackage(SHARE_PKG); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PackageManager manager = getApplicationContext().getPackageManager(); List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0); if (infos.size() > 0) { // size == 0 说明当前设备不支持Intent方式分享 getApplicationContext().startActivity(intent); } }

3、分享文件

private void doStartFileIntent() { String text = shareText.getText().toString(); if (TextUtils.isEmpty(text)) { return; } ArrayList<Uri> uris = getFileUris(text); if (uris.isEmpty()) { return; } Intent intent; if (uris.size() == 1) { // 分享单个文件 intent = new Intent(Intent.ACTION_SEND); intent.setType(SHARE_INTENT_TYPE); intent.putExtra(Intent.EXTRA_STREAM, uris.get(0)); intent.setPackage(SHARE_PKG); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } else { // 分享多个文件 intent = new Intent(Intent.ACTION_SEND_MULTIPLE); intent.setType(SHARE_INTENT_TYPE); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); intent.setPackage(SHARE_PKG); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } PackageManager manager = getApplicationContext().getPackageManager(); List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0); if (infos.size() > 0) { // size == 0 说明当前设备不支持Intent方式分享 getApplicationContext().startActivity(intent); } }

4、权限申请

需向用户申请以下权限:

"android.permission.READ_EXTERNAL_STORAGE"

干得好,你已经成功完成了Codelab并学到了:

1、首先需要在华为设备上打开Huawei Share功能:

Huawei Share设置

2、在华为发送设备启动ShareKitDemo程序,APP显示界面如下:

ShareKitDemo程序界面

编辑分享文件后,点击【开始分享】按钮后,触发启动Huawei Share分享文件。如果分享文本,直接编辑文本内容即可。

选择设备分享文件

3、选择分享设备后,华为接收设备显示接收到分享文件,提示用户选择是否接收:

华为设备接收第三方设备分享文件

Huawei Share显示接收文件列表

您可以阅读下面链接,了解更多相关的信息。
Share Engine业务介绍

接口详细描述参见《Share Engine应用集成API接口描述》。

详细代码示例可参考《Share Engine应用集成示例代码》。

Download

已复制代码