Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 07-09-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: Sep 2007
Ubicación: Madrid
Posts: 439
Poder: 12
jhonalone Va por buen camino
Muchas gracias por tus explicaciones, Turbo... (por abreviar)

He seguido tus instrucciones y he creado una versión nueva del SDK (Api 28) Compilo con targetSdkVersion 28 y 26 y me da el mismo problema con los permisos en el SDK.

He bajado el archivo KatriFree de Dave Notave que dice Johnny y estoy buscando allí alguna solución que me valga. Ya que te estás interesando por ayudarme, te haré llegar el resultado si es positivo. A tí y a quien pueda interesar en el foro.

Un saludo cordial.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #22  
Antiguo Hace 4 Semanas
jhonalone jhonalone is offline
Miembro
 
Registrado: Sep 2007
Ubicación: Madrid
Posts: 439
Poder: 12
jhonalone Va por buen camino
Hola a todos y a Turbo...

No he abandonado (todavía) el asunto tengo algunas perspectivas esperanzadoras en DX Tokyo. Pronto tendréis noticias mías. Estoy usando KastriFree, como ya os comenté.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #23  
Antiguo Hace 3 Semanas
jhonalone jhonalone is offline
Miembro
 
Registrado: Sep 2007
Ubicación: Madrid
Posts: 439
Poder: 12
jhonalone Va por buen camino
Hola a todos.

Como dije he estado tratando de adaptar el código de KastriFree de Dave.

Creo que he conseguido una adaptación ("razonable") del control de los permisos de Android en la versión 10.2.3 de DX Tokyo. Esta versión la he bajado de prueba desde Embarcadero. Yo estoy usando la versión Seattle. Esperaré a que Embarcadero saque la versión 10.3 para actualizarme (Si viene actualizado a las nuevas exigencias de Google - Android)

Sé que turbopascual5.0 estaba interesado.

A ver soy capaz de contarlo sin que se me olvide nada y que se entienda bien.

Paso 1.- Te bajas y descomprimes el archivo KastriFree-master.zip desde AQUI.

Paso 2.- Para no andar cambiando directorios, he copiado en el directorio donde tengo los archivos de la aplicación, los siguientes archivos desde la carpeta C:\KastriFree\KastriFree-master\Core:

(La mayoría de estas no son necesarias para Android, pero ahí están por si quieres experimentar otros SO's)

DW.OSDevice.iOS.pas
DW.OSDevice.Linux.pas
DW.OSDevice.Mac.pas
DW.OSDevice.pas
DW.OSDevice.Win.pas
DW.OSLog.Linux.pas
DW.OSLog.Mac.pas
DW.OSLog.pas
DW.OSLog.Win.pas


(Estas creo que son necesarias casi todas o todas, no me he parado mucho a verlo)

DW.Androidapi.JNI.Log.pas
DW.GlobalDefines.inc
DW.OSDevice.Android.pas
DW.OSLog.Android.pas
DW.PermissionsRequester.Android.pas
DW.PermissionsRequester.Android_ORIGINAL.pas
DW.PermissionsRequester.Default.pas
DW.PermissionsRequester.pas
DW.PermissionsTypes.pas

(Desde C:\KastriFree\KastriFree-master\Demos\AndroidAPI26)

provider_paths.xml

(Desde C:\KastriFree\KastriFree-master\ThirdParty\Android )

support-compat-26.1.0.jar
support-core-utils-26.1.0.jar

Paso 3.- Añadir a la cláusula Uses del formulario principal.

DW.PermissionsRequester, DW.PermissionsTypes,

Paso 4.- En la clase principal del formulario principal añadimos


Código Delphi [-]
.........................................................................

  private
    FRequester: TPermissionsRequester;
    procedure PermissionsResultHandler(Sender: TObject; const ARequestCode: Integer; const AResults: TPermissionResults);

  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

const   // Pueden añadirse las que se necesiten
  Read_SD = 'android.permission.READ_EXTERNAL_STORAGE';
  Write_SD = 'android.permission.WRITE_EXTERNAL_STORAGE';
  Calendario =  'android.permission.READ_CALENDAR';
  Internet = 'android.permission.INTERNET';
  BlueTooth = 'android.permission.BLUETOOTH';
  BlueAdmin ='android.permission.BLUETOOTH_ADMIN';

  Permis_Code = 1;

..........................................................................


Y en la cláusula implementation


Código Delphi [-]

.................................................

implementation

{$R *.fmx}

var
  Mostrar_Permisos : Boolean = True;

.............................. ................

constructor TIni.Create(AOwner: TComponent);
begin
  inherited;
  FRequester := TPermissionsRequester.Create;
  FRequester.RequestPermissions([Read_SD, Write_SD, Calendario, Internet, BlueTooth, BlueAdmin], Permis_Code);
  FRequester.OnPermissionsResult := PermissionsResultHandler;
end;

destructor TIni.Destroy;
begin
  FRequester.Free;
  inherited;
end;

procedure permitido;
begin
  Ini.ComprobarExport(nil);
end;

procedure rechazado;
begin
  ShowMessage('Debe conceder todos los permisos antes usar esta aplicación.'+#13+
                'El programa se CERRARÁ ahora. Si concedió los permisos, funcionará correctamente al ejecutarlo de nuevo.');
end;

procedure TIni.PermissionsResultHandler(Sender: TObject; const ARequestCode: Integer; const AResults: TPermissionResults);
begin
  case ARequestCode of
    Permis_Code:
    begin
      if AResults.AreAllGranted
      then  permitido
      else  rechazado;
    end;
  end; // case
end;

procedure TIni.FormShow(Sender: TObject);
begin
    if Mostrar_Permisos
    then begin
           FRequester.RequestPermissions([Read_SD, Write_SD, Calendario, Internet, BlueTooth, BlueAdmin], Permis_Code);
           Mostrar_Permisos := False;
         end;
end;


Seguimos las recomendaciones de Dave

Passo 5.- En la columna de la derecha del IDE que pone Project Manager inabilitamos la libreria de Anddroid llamada android-support-v4.dex.jar
y añadimos las librerías que hemos copiado en el punto 2 llamadas
support-compat-26.1.0.jar
support-core-utils-26.1.0.jar


Paso 6.- Añadimos a la lista de Deploy
del Proyecto el archivo provider_paths.xml que hemos copiado en el paso 2

Paso 7.- RECUERDA QUE PARA GENERAR EL ARCHIVO AndroidManifest.template.xml TIENES QUE HABER COMPILADO AL MENOS UNA VEZ TU PROGRAMA

Paso 8.- Cambiamos en el el AndroidManifest.template.xml, sólo android:targetSdkVersion="26"

Paso 9.- Añadimos en el manifiesto el provider siguiente en el sitio que está.

Código:
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.Embarcadero.nombre-de-tu-programa.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/>
        </provider>

Código Delphi [-]
................................................................................
    
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="26" />
<%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    ersistent="%persistent%" 
        android:restoreAnyVersion="%restoreAnyVersion%" 
        android:label="%label%" 
        android:debuggable="%debuggable%" 
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%">
       AQUI VA EL PROVIDER QUE COPIAMOS MAS ARRIBA (no olvides PONER EL NOMBRE DE TU PROGRAMA)
<%application-meta-data%>
    <%services%>
....................................................................................


Paso 10.- Como la barra de estado se descompone, debes seguir las instrucciones de Dave (Te las copio)

"Taking care of the status bar
In the previous article, it had slipped past me that when changing the API target, the status bar was no longer visible!

In this demo, the workaround was to change the Fill property of the form, setting the Color to Null, and the Kind to Solid. In addition, a Rectangle is added to the form, the Align property set to Contents, and the Color property of Fill set to Whitesmoke. Now the status bar is visible again, however remember that this is just a workaround; hopefully an official solution will present itself in the next update".

Creo que no se me olvida nada.

Un saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas al pasar de QuickReport a FastReport fito42 Impresión 0 05-11-2014 15:28:34
problemas en consulta al pasar parametros leofuentes21 SQL 3 28-12-2012 18:03:36
Problemas al pasar maestro-detalle de D4 a D6 JMOTON Conexión con bases de datos 2 23-11-2005 12:35:06
problemas al pasar un parametro a una consulta sql tiagor64 Conexión con bases de datos 2 24-01-2005 18:37:19
problemas para pasar los datos de un Tmemo a otro, ya probe de todo :/ nahuel007 Varios 6 08-01-2005 20:05:02


La franja horaria es GMT +2. Ahora son las 03:51:23.


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