Función de carpeta de datos de la aplicación Drive Kit con 3 líneas de código
Published: 2020-09-17 16:27:55

[Antecedentes]
CombuRD es una aplicación de República Dominicana que consulta precios de combustible en República Dominicana. Las aplicaciones pueden enviar notificaciones de precios de combustible cada semana, mostrar una lista de estaciones de servicio cercanas, registrar el historial de precios de combustible y el historial de consumo de combustible, y almacenar datos de aplicaciones en el espacio en la nube, proporcionando servicios de información de alta calidad para propietarios de automóviles que son conscientes de los costos.

[Problema]
Actualmente, el desarrollador utiliza HMS Drive Kit para almacenar y realizar copias de seguridad de los datos de las aplicaciones del cliente. Sin embargo, el desarrolladors almacena directamente los datos de la aplicación en Huawei Drive, lo que trae los siguientes problemas:
1. Cuando los clientes usan Huawei Drive, se muestran los archivos de respaldo con nombres largos, lo que afecta la experiencia del usuario y es fácil de eliminar por error, lo que afecta el rendimiento de la aplicación..
2) Los archivos de copia de seguridad también son visibles para otras aplicaciones, lo que provoca pérdidas de privacidad y riesgos para la seguridad de los datos..
[Solución]
Actualmente, el HMS Drive Kit ha lanzado la función de carpeta de datos de la aplicación (versión del SDK posterior a 4.0.0.301) y se le anima a actualizar. Esta función tiene dos ventajas, ¡y solo requiere tres líneas de código para actualizar según la versión anterior!
1. La carpeta de datos de la aplicación es una carpeta oculta que los clientes no pueden ver.
2) Del mismo modo, la carpeta de datos de la aplicación solo es visible para la aplicación que la crea, lo que reduce en gran medida los riesgos de fuga de privacidad.

[Pasos de actualización]
Si han implementado las capacidades básicas del Drive Kit anteriormente, solo necesitamos modificar las siguientes tres líneas de código para aplicar la nueva función de carpeta de datos de la aplicación:
1. Solicitar el alcance de la carpeta de datos de la aplicación.
En versiones anteriores, el inicio de sesión generalmente se realiza de la siguiente manera:
```
private void driveLogin() {
......
List<Scope> scopeList = new ArrayList<>();
HuaweiIdAuthParams authParams = new   HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
.setAccessToken().setScopeList(scopeList).setIdToken().createParams();
......
}
```
Agregar una línea de código para solicitar el alcance de la carpeta de datos de la aplicación está bien.
```
private   void driveLogin() {
......
List<Scope> scopeList = new   ArrayList<>();
scopeList.add(new Scope(DriveScopes.SCOPE_DRIVE_APPDATA));
HuaweiIdAuthParams authParams = new   HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
.setAccessToken().setScopeList(scopeList).setIdToken().createParams();
......
}
```
1. Carga archivos en Huawei Drive.
En la versión anterior, el archivo se carga de la siguiente manera:

```
private   void uploadFiles() {
new Thread(new Runnable() {
@Override
public void run() {
……
File content = new   File().setFileName(file.getName())
.setMimeType(mimeType(file))
.setParentFolder(Collections.singletonList(directoryCreated.getId()));
……}
}
```
Al ejecutar File. solicitud de creación, especifica el directorio principal del archivo como directorio raíz de los datos de la aplicación "applicationData". Solo necesita modificar el parámetro de setParentFolder () aquí.
```
private   void uploadFiles() {
new Thread(new Runnable() {
@Override
public void run() {
……
File content = new   File().setFileName(file.getName())
.setMimeType(mimeType(file))
.setParentFolder(Collections.singletonList(directoryCreated.getId()));
.setParentFolder(Collections.singletonList("applicationData"));
……}
}
```
2. Busca archivos en la carpeta de datos de la aplicación Huawei Drive.
En versiones anteriores, la búsqueda de archivos recorrerá todo el Huawei Drive:

```
private   void queryFiles() {
new Thread(new Runnable() {
@Override
public void run() {
......
fileList = request.setQueryParam(queryFile)
.setPageSize(10).setOrderBy("fileName")
.setFields("category,nextCursor,files/id,files/fileName,files/size")
.execute();}
}
```
Si solo necesitas buscar archivos en la carpeta de datos de la aplicación, agrega esta línea de código aquí: "setContainers (" applicationData ")"

```
private   void queryFiles() {
new Thread(new Runnable() {
@Override
public void run() {
......
fileList =   request.setQueryParam(queryFile)
.setPageSize(10).setOrderBy("fileName")
.setFields("category,nextCursor,files/id,files/fileName,files/size")
.setContainers("applicationData")
.execute();}
}
```

Esta sección solo describe cómo actualizar rápidamente la versión de una versión anterior a una nueva versión que admita la función de carpeta de datos de la aplicación. Para obtener más detalles, consulta la guía de desarrollo y la demostración en el archivo adjunto.

[Carga de trabajo y efecto]
Según la guía de desarrollo, para implementar esta funcionalidad requerimos solo un dia y la carga de trabajo es muy pequeña.
Después del desarrollo, el espacio en la nube del usuario es más ordenado y se mejora la experiencia del usuario. Además, se eliminan los riesgos de seguridad y los riesgos de fuga de privacidad, y los CP quedan satisfechos.
Este artículo fue posible gracias a nuestros colegas Qiuyu y Tenhaitao.

Les compartimos la liga al articulo original 
https://forums.developer.huawei.com/forumPortal/en/topicview?tid=0201351415323380185&fid=0101187876626530001