华为Appgallery Connect提供了一个云存储(CloudStorage)的服务,号称提供了一个便捷的云端存储服务,应用开发者使用的时候,可以不用关注服务器的部署,直接使用就行。
目前这个功能还在bate阶段,我先抢先体验了一下。如果你想快速体验云存储服务的功能,请参考demo。
1、环境与应用信息版本名称 | 集成环境 | 测试设备 |
---|---|---|
agconnect-storage:1.3.1.100 | AndroID Studio | 荣耀Magic 2 |
AGC地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
SDK集成方式:Maven仓集成,对接华为Maven仓:
implementation 'com.huawei.agconnect:agconnect-storage:1.3.1.100'
PS: 云存储服务目前还处于beta状态,我是发了邮件申请开通才可以使用的:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply
在我的项目 下选择你的开发项目,在构建下面,找到云存储服务,点击开通:
没有AndroID项目的话,可以先自己创建一个。
开通服务的时候,需要先配置存储实例,这里按需配置就可以,我就随便配置一个。
下一步,还需要配置安全策略,这里使用默认的安全策略就好:
PS:默认的情况是,只有经过身份认证的用户才能进行读写。
1、在项目级的gradle文件中添加华为Maven,配置如下内容
buildscript {repositorIEs {//… maven {url 'https://developer.huawei.com/repo/'} } dependencIEs { //… classpath 'com.huawei.agconnect:agcp:1.4.1.300' }} allprojects {repositorIEs {//… maven {url 'https://developer.huawei.com/repo/'} }}
2、打开应用级的build.gradle文件,配置好云存储的SDK和华为认证服务的SDK,配置下面标红的内容即可。注意别落了上面的agcp插件。
apply plugin: 'com.androID.application'apply plugin: 'com.huawei.agconnect'androID {…..} dependencIEs { //… implementation 'com.huawei.agconnect:agconnect-auth:1.4.1.300' implementation 'com.huawei.agconnect:agconnect-storage:1.3.1.100'}
b) 下载Json文件,并且配置默认存储实例1、在AGC界面上,选择 我的项目 -> 项目设置–> 常规 下面,下载agconnect-services.Json文件到你的AndroID项目的app路径下。
2、记得查看你的Json文件,注意是否有default_storage,如果没有的话,需要自行添加。
4、前置步骤1、申请权限
需要先申请文件的读写权限和网络访问权限,在Mainfest.xml文件里面application的外层,配置下面这些代码来申请权限:
注意androID:allowBackup的参数必须为false。
<uses-permission androID:name="androID.permission.INTERNET" /><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE" /> <application androID:allowBackup="false"/>
2、界面布局
设置几个按钮,通过点击按钮来实现功能:包括上传,下载文件,和删除文件的按钮。
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:orIEntation="vertical" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:gravity="center_vertical" tools:context=".MainActivity"> <button androID:onClick="uploadfile" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:textAllCaps="false" androID:text="Upload file" /> <button androID:onClick="downloadfile" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:textAllCaps="false" androID:text="Download file" /> <button androID:onClick="deletefile" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:textAllCaps="false" androID:text="Delete file" /> <TextVIEw androID:ID="@+ID/showResult" androID:enabled="false" androID:hint="This will display the result of the operation" androID:layout_wIDth="match_parent" androID:layout_margintop="10dp" androID:gravity="center" androID:layout_height="wrap_content" /> </linearLayout>
5、功能开发:1、先初始化参数
在MainActivity,先初始化参数:包括,云存储实例,展示消息框,以及相关权限。
private AGCStorageManagement mAGCStorageManagement; private TextVIEw mShowResultTv; private String[] permissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, }; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); mShowResultTv = findVIEwByID(R.ID.showResult); AGConnectInstance.initialize(getApplicationContext()); login(); ActivityCompat.requestPermissions(this, permissions, 1); }
2、相关方法:匿名登录&获取路径
匿名认证方法:对于云存储的数据 *** 作,需要经过华为认证服务,这里为了简化,就仅使用华为的匿名认证:
private voID login() { if (AGConnectAuth.getInstance().getCurrentUser() != null) { System.out.println("already sign a user"); return; } AGConnectAuth.getInstance().signInAnonymously().addOnSuccessListener(new OnSuccessListener<SignInResult>() { @OverrIDe public voID onSuccess(SignInResult signInResult) { System.out.println("AGConnect OnSuccess"); } }).addOnFailureListener(new OnFailureListener() { @OverrIDe public voID onFailure(Exception e) { // onFail } });}
获取文件路径的方法:对于云存储的数据 *** 作,上传时候本地文件的获取,以及云端文件的下载存放,都是在这个路径下, 即 /AGCSdk路径下
private String getAGCSdkDirPath() { String path = Environment.getExternalStorageDirectory().getabsolutePath() + "/AGCSdk/"; System.out.println("path=" + path); file dir = new file(path); if (!dir.exists()) { dir.mkdirs(); } return path; }
3、初始化云存储实例
云存储的每一步 *** 作之前,都需要确保已经进行初始化了云存储实例
private voID initAGCStorageManagement() { mAGCStorageManagement = AGCStorageManagement.getInstance();}
4、上传文件:
需要先获取到本地文件 ,以及这个文件的路径,然后创建文件引用,对文件的进行上传的uploadTask *** 作。
public voID uploadfile(VIEw vIEw) { if (mAGCStorageManagement == null) { initAGCStorageManagement(); } final String path = "test.jpg"; String filename = "test.jpg"; String agcSdkDirPath = getAGCSdkDirPath(); final file file = new file(agcSdkDirPath, filename); if (!file.exists()) { mShowResultTv.setText("file is not exist!"); return; } StorageReference storageReference = mAGCStorageManagement.getStorageReference(path); UploadTask uploadTask = storageReference.putfile(file); try { uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.UploadResult>() { @OverrIDe public voID onSuccess(UploadTask.UploadResult uploadResult) { mShowResultTv.setText("upload success!"); } }).addOnFailureListener(new OnFailureListener() { @OverrIDe public voID onFailure(Exception e) { mShowResultTv.setText("upload failure!" + e.getMessage()); } }); } catch (Exception e) { e.printstacktrace(); }}
5、下载文件:
需要先在本地设备中创建该文件,包括这个文件的路径和文件名。然后创建一个云端文件名称的引用,对这个文件的引用的进行下载的downloadTask *** 作。
public voID downloadfile(VIEw vIEw) { if (mAGCStorageManagement == null) { initAGCStorageManagement(); } String filename = "download_" + System.currentTimeMillis() + ".jpg"; final String path = "test.jpg"; String agcSdkDirPath = getAGCSdkDirPath(); final file file = new file(agcSdkDirPath, filename); StorageReference storageReference = mAGCStorageManagement.getStorageReference(path); DownloadTask downloadTask = storageReference.getfile(file); try { downloadTask.addOnSuccessListener(new OnSuccessListener<DownloadTask.DownloadResult>() { @OverrIDe public voID onSuccess(DownloadTask.DownloadResult downloadResult) { mShowResultTv.setText("download success!"); } }).addOnFailureListener(new OnFailureListener() { @OverrIDe public voID onFailure(Exception e) { mShowResultTv.setText("download failure!" + e.getMessage()); } }); } catch (Exception e) { e.printstacktrace(); }}
6、删除文件:
首先,先指定一个文件名为test.jpg的文件,对这个文件名创建一个引用,然后对该引用执行deleteTask *** 作,就可以将云端的test.jpg删除了。
public voID deletefile(VIEw vIEw) { if (mAGCStorageManagement == null) { initAGCStorageManagement(); } final String path = "test.jpg"; System.out.println(String.format("path=%s", path)); StorageReference storageReference = mAGCStorageManagement.getStorageReference(path); Task<VoID> deleteTask = storageReference.delete(); try { deleteTask.addOnSuccessListener(new OnSuccessListener<VoID>() { @OverrIDe public voID onSuccess(VoID aVoID) { mShowResultTv.setText("delete success!"); } }).addOnFailureListener(new OnFailureListener() { @OverrIDe public voID onFailure(Exception e) { mShowResultTv.setText("delete failure!" + e.getMessage()); } }); } catch (Exception e) { e.printstacktrace(); } }
6、打包测试:AndroID Studio连接手机,然后将该安卓项目运行到手机上。
1、准备好初始文件打开手机的文件管理器,找到 内部存储/AGCSdk/ 路径下,添加并且准备一个test.jpg文件。如下图所示:
2、上传文件 & 上传结果打开刚刚的应用,点击Upload file 按钮,查看上传结果
此时AGC界面上,也可以看到刚刚上传的文件:
2、下载文件 & 下载结果在应用内点击下载按钮,可以看到界面显示 下载成功。
此时回到文件管理器,可以看到刚刚下载的文件。
2、删除文件 & 删除结果点击应用里面的删除按钮,可以看到应用界面上显示删除成功。
此时到AGC界面上确认下载结果,发现刚刚的test.jpg文件已经被删除了
7、总结仅关注前端应用的开发,就可以开发一个带云端存储服务器的应用。再也不用为了服务器的搭建和运维担心,省时省力。而且还提供了类似于管理员模式的web控制台,可以简单直观的对服务器上的文件进行管理。
这个云存储服务,除了最普通的上传下载和删除功能,还包括有列举文件,设置元数据等功能,具体可以看官方文档:
云存储服务开发指南:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-introduction
云存储codelab:
https://developer.huawei.com/consumer/cn/codelab/CloudStorage/index.html#1
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201411971207960391?fid=0101271690375130218
原作者:Mayism
总结以上是内存溢出为你收集整理的快速集成华为AGC云存储服务-Android全部内容,希望文章能够帮你解决快速集成华为AGC云存储服务-Android所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)