Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Acceso al almacenamiento interno en Android 11 y superior (https://www.clubdelphi.com/foros/showthread.php?t=96363)

dani36652 20-09-2023 01:20:18

Acceso al almacenamiento interno en Android 11 y superior
 
Hola a todos desarrolladores Delphi.
Como sabrán, desde Android 11 se han establecido nuevas medidas de seguridad y privacidad cuyo alcance también han llegado al almacenamiento interno.
Debido a esto y viendo que Embarcadero no ha implementado la solución incluso en Delphi 11.3 les hago llegar la solución a dichos inconvenientes los cuales son:
-Acceso a carpetas específicas del almacenamiento interno
-Creación de carpetas en el almacenamiento interno
-Lectura de archivos existentes en el almacenamiento interno
-Eliminar archivos en el almacenamiento interno, etc.
Les dejo el siguiente Link de un repositorio de GitHub el cual ya actualicé para aplicar la solución también en Delphi 11.3 junto con un ejemplo
Link: https://github.com/dani36652/Delphi-...-y-Posteriores

Nota:
-La rama "main" del repositorio contiene archivos para Delphi 11.0 y las demás ramas contienen los archivos necesarios para las nuevas
versiones de Delphi que vayan saliendo
-Esta solución fue probada también en Delphi Community Edition 11.3

ElKurgan 20-09-2023 07:26:04

Gracias por el aporte, un gran trabajo

Saludos

Neftali [Germán.Estévez] 20-09-2023 09:05:56

^\||/^\||/^\||/^\||/

Casimiro Notevi 20-09-2023 10:41:31

^\||/^\||/^\||/

dani36652 25-04-2024 17:46:39

Hola, intentando replicar la problemática en la última versión de Delphi 12.1 la gente de Embarcadero le ha dado solución por lo que para hacer uso del almacenamiento interno deben agregar al uses las unidades Androidapi.JNI.Os, Androidapi.JNI.Provider...

El uso desde Delphi se mantiene igual:

Con el siguiente código verifica el status del permiso MANAGE_APP_ALL_FILES_ACCESS_PERMISSION implementado en Android 11+ y de no tenerlo autorizado se le pedirá al usuario que lo haga.

Código Delphi [-]
if TJEnvironment.JavaClass.isExternalStorageManager then
 begin
 ShowMessage('Si hay acceso al almacenamiento');
 end else
 begin
 intent:=TJIntent.Create;
 //Puede asignar una acción mediante su string
 //intent.setAction(StringToJString('android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION'));
 intent.setAction(TJSettings.JavaClass.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
 Uri:= TJnet_Uri.JavaClass.parse(StringToJString(Concat('package:',
 JStringToString(TAndroidHelper.Context.getPackageName))));
 intent.setData(Uri);
 TAndroidHelper.Activity.startActivity(intent);
 end;

Recueden tener marcada la casilla del permiso Manage external storage en las configuraciones de su proyecto en el apartado de "Uses Permissions"


La franja horaria es GMT +2. Ahora son las 21:13:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi