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应用集成示例代码》。