Cloud Storage is scalable and maintenance-free. By integrating the Cloud Storage SDK, you can store high volumes of data such as image, audio, and video files generated by your users to the cloud or download these data from the cloud.
In this codelab, you will create an app that integrates Cloud Storage capabilities. Your app will allow users to query and delete files by calling APIs.
A device running Android 4.2 or a later version
To integrate Cloud Storage of AppGallery Connect, you must complete the following preparations:
Before integrating the Cloud Storage SDK, you need to enable Cloud Storage in AppGallery Connect.
If you are using Android Studio, you need to integrate the Cloud Storage SDK into your Android Studio project before development.
// Configure an address.
apply plugin: 'com.huawei.agconnect'
dependencies {
// Add the dependency related to the AppGallery Connect framework before adding a storage dependency.
implementation 'com.huawei.agconnect:agconnect-storage:1.5.0.100'
}
<?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="getFileList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:text="Get FileList" />
<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>
The sample code in this codelab uses the anonymous sign-in mode. Therefore, you need to enable anonymous authentication of Auth Service in AppGallery Connect. Otherwise, sign-in fails.
implementation 'com.huawei.agconnect:agconnect-core:1.6.5.300'
implementation 'com.huawei.agconnect:agconnect-auth:1.6.5.300'
<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" />
private String[] permissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
};
ActivityCompat.requestPermissions(this, permissions, 1);
private void login() {
if (AGConnectAuth.getInstance().getCurrentUser() != null) {
System.out.println("already sign a user");
return;
}
AGConnectAuth.getInstance().signInAnonymously().addOnSuccessListener(signInResult -> System.out.println("AGConnect OnSuccess"))
.addOnFailureListener(e -> System.out.println("AGConnect OnFail: " + e.getMessage()));
}
You can call related APIs of the Cloud Storage SDK to develop functions.
Sign in to
AppGallery Connect, go to My projects > Build >
Cloud Storage, click Upload file on
the Files tab page, and upload the
test.jpg file.
Call the AGCStorageManagement.getInstance method to initialize a storage instance before your app uses any Cloud Storage functions.
private void initAGCStorageManagement() {
mAGCStorageManagement = AGCStorageManagement.getInstance();
}
Tap Get FileList. The getFileList method is called to obtain the list of certain files from the cloud.
public void getFileList(View view) {
if (mAGCStorageManagement == null) {
initAGCStorageManagement();
}
getFileList();
}
private void getFileList() {
final String path = "test.jpg";
new Thread(new Runnable() {
@Override
public void run() {
StorageReference storageReference = mAGCStorageManagement.getStorageReference(path);
Task<ListResult> listResultTask = null;
listResultTask = storageReference.list(100);
try {
listResultTask.addOnSuccessListener(new OnSuccessListener<ListResult>() {
@Override
public void onSuccess(ListResult listResult) {
mShowResultTv.setText("getfilelist success!");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
mShowResultTv.setText("getfilelist failure!");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
Tap Delete File. The deleteFile method is called to delete the uploaded file from the cloud.
public void deleteFile(View view) {
if (mAGCStorageManagement == null) {
initAGCStorageManagement();
}
deleteFile();
}
private void deleteFile() {
final String path = "test.jpg";
System.out.println(String.format("path=%s", path));
new Thread(new Runnable() {
@Override
public void run() {
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!");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
View related methods in onCreate.
@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);
}
Well done. You have successfully built an app that integrates Cloud Storage of AppGallery Connect and learned how to manage Cloud Storage in AppGallery Connect.