es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter – Guardar archivo en la carpeta de descargas (Necesita utilizar la API de Media Store)

Mi aplicación fue rechazada por Google por violación de una política.

Problema: Es necesario utilizar la API del Media Store o no se tiene acceso a los archivos

Aquí está el enlace de referencia proporcionado en el correo electrónico de rechazo.

El siguiente código funciona correctamente y el archivo se descarga en la carpeta “Descargas”.

Versión del SDK de destino y lista de permisos de Android utilizados:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"></uses-permission>

minSdkVersion 19
targetSdkVersion 31

El siguiente método obtiene la ruta de la carpeta “Descargas”. Actualmente he codificado la ruta. Este método también solicita permiso en tiempo de ejecución y finalmente guarda el archivo pdf:

Future<bool> savePdfFile(dynamic bytes) async {
try {
var directoryPath = "";

    if (Platform.isAndroid) {
        if(
            (await _requestPermission(Permission.storage)) &amp;&amp; 
            (await _requestPermission(Permission.accessMediaLocation)) &amp;&amp; 
            (await _requestPermission(Permission.manageExternalStorage))
        ) {
          Directory dir = Directory(&#39;/storage/emulated/0/Download&#39;);
          directoryPath = dir.path;
        }
    }

    if (directoryPath != &quot;&quot;) {
        File saveFile = File(directoryPath + &quot;/sample.pdf&quot;);
        await saveFile.writeAsBytes(bytes);

        return true;
    }
}
catch (e) {
    return false;
}

}

Si elimino cualquier permiso, el archivo no se guarda. ¿Qué debo hacer? Me quedé atorado aquí, chicos. TIA.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La aplicación fue rechazada por Google por violación de política. Según el correo de rechazo, el problema estaba relacionado con el uso de la API Media Store o la falta de acceso a archivos. También se proporcionaron la versión SDK objetivo y la lista de permisos de Android utilizados en el código.

    El código proporcionado descarga el archivo y lo guarda en la carpeta “Descargas”. El método utilizado para obtener la ruta de la carpeta “Descargas” está codificado en duro y también solicita permiso en tiempo de ejecución antes de finalmente guardar el archivo PDF.

    Sin embargo, si se eliminan alguno de los permisos, no se guarda el archivo. Para resolver este problema, es necesario utilizar la API Media Store para acceder a los archivos. El enlace de referencia proporcionado en el correo de rechazo explica cómo utilizar la API Media Store para acceder a los archivos.

    Por lo tanto, para solucionar el problema y conseguir que la aplicación sea aprobada por Google, se debe utilizar la API Media Store para acceder a los archivos en lugar del método actual.

Comments are closed.