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 Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2021
viverosjosem viverosjosem is offline
Baneado
 
Registrado: dic 2017
Posts: 64
Poder: 0
viverosjosem Va por buen camino
Hola Voci.

Cita:
Compilado con delphi 10.3.3 y probado en mi móvil con android 7.
El punto es que funciona bien con android 7, y android 8. El problema es que en Android 10 no funciona.

La misma aplicacion, sin cambiarle nada. Al instalarla en un dispositivo con Android 10, se cuelga al iniciar. No funciona. Inclusive tengo que reiniciar el dispositivo con Android 10, para poder cerrar la aplicacion.

Allguma idea?

Saudos.
Jose Miguel.
Responder Con Cita
  #2  
Antiguo 28-02-2021
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
Código Delphi [-]
PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE), JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
  procedure(const APermissions: TArray<string>; const AGrantResults: TArray)   //<-- Aqui da error de compilacion

Como dices que te daba un error de compilación te he puesto el código completo para que lo compiles y lo pruebes en android 10, yo no tengo ningún dispositivo con esa versión.

Así te aseguras que el problema está al otorgar/negar los permisos.

Saludos.
Responder Con Cita
  #3  
Antiguo 28-02-2021
viverosjosem viverosjosem is offline
Baneado
 
Registrado: dic 2017
Posts: 64
Poder: 0
viverosjosem Va por buen camino
Hola Voci.
Volvi a compilar tu codigo. Pero obtengo los mismos errores, que te comparto mas abajo.

Nuevamente no me reconoce el tipo Array.

Código Delphi [-]
PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE), JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
  procedure(const APermissions: TArray<string>; const AGrantResults: TArray)   //<-- Aqui da error de compilacion

Código Delphi [-]
  -V -VN -NO.\Android\Debug  ConfigIP.dpr   
[DCC Error] UConfigIP.pas(40): E2003 Undeclared identifier: 'TArray'
[DCC Error] UConfigIP.pas(42): E2008 Incompatible types
[DCC Error] UConfigIP.pas(42): E2012 Type of expression must be BOOLEAN
[DCC Error] UConfigIP.pas(49): E2250 There is no overloaded version of 'RequestPermissions' that can be called with these arguments
[DCC Fatal Error] ConfigIP.dpr(7): F2063 Could not compile used unit 'UConfigIP.pas'
Failed
Elapsed time: 00:00:02.1

Saludos.
Jose Miguel.
Responder Con Cita
  #4  
Antiguo 02-03-2021
viverosjosem viverosjosem is offline
Baneado
 
Registrado: dic 2017
Posts: 64
Poder: 0
viverosjosem Va por buen camino
Hola Kurono.
Disculpa, no habia visto tu mensaje.

Cita:
cuando yo hago aplicaciones y me pasa eso lo que hago es ejecutar una aplicacion en blanco sin ningun componente asi compruebo si es un problema de API o de permiso has esa prueba a ver que pasa
Hice lo que propones. Quite todo el codigo de acceso al disco. Y la aplicacion funciona bien en Android 10. Pero al volver a incorporar el codigo que requiere leer datos del disco. esta se cuelga. Osea, claramente, es un problema de permisos en android 10.

Alguna idea.

Saludos.
Jose Miguel.
Responder Con Cita
  #5  
Antiguo 02-03-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver si esa variable SDCARD está apuntando a algún sitio que no existe en ese dispositivo android 10
Responder Con Cita
  #6  
Antiguo 03-03-2021
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
Cita:
Empezado por viverosjosem Ver Mensaje
Hola Kurono.
Disculpa, no habia visto tu mensaje.



Hice lo que propones. Quite todo el codigo de acceso al disco. Y la aplicacion funciona bien en Android 10. Pero al volver a incorporar el codigo que requiere leer datos del disco. esta se cuelga. Osea, claramente, es un problema de permisos en android 10.

Alguna idea.

Saludos.
Jose Miguel.

intenta asignar los permiso desde el archivo xml que se gernera a ver que ocurre
Responder Con Cita
  #7  
Antiguo 12-03-2021
viverosjosem viverosjosem is offline
Baneado
 
Registrado: dic 2017
Posts: 64
Poder: 0
viverosjosem Va por buen camino
Unhappy

Hola Kurono.
modifique manualmente el arcchivo XML, pero este es reescrito por delphi al compilar la aplicacion. (no funciono).

Aprovecho a comentarles que encontre este codigo en: C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Mobile Snippets\AccessCameraApp

Código Delphi [-]
//---------------------------------------------------------------------------

// This software is Copyright (c) 2015-2019 Embarcadero Technologies, Inc.
// You may only use this software if you are an authorized licensee
// of an Embarcadero developer tools product.
// This software is considered a Redistributable as defined under
// the software license agreement that comes with the Embarcadero Products
// and is subject to that software license agreement.

//---------------------------------------------------------------------------

unit uMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.Permissions,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, System.Actions,
  FMX.ActnList, FMX.StdActns, FMX.MediaLibrary.Actions, FMX.Objects, FMX.Graphics,
  FMX.Controls.Presentation;

type
  TAccessCameraAppForm = class(TForm)
  private const
    PermissionCamera = 'android.permission.CAMERA';
    PermissionReadExternalStorage = 'android.permission.READ_EXTERNAL_STORAGE';
    PermissionWriteExternalStorage = 'android.permission.WRITE_EXTERNAL_STORAGE';
  private
    procedure DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc);
    procedure TakePicturePermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray);
  published var
    alGetFromCamera: TActionList;
    TakePhotoFromCameraAction1: TTakePhotoFromCameraAction;
    imgCameraImage: TImage;
    ToolBar1: TToolBar;
    btnTakePhoto: TButton;
    Label1: TLabel;
  published
    procedure TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
    procedure btnTakePhotoClick(Sender: TObject);
  end;

implementation

uses
  FMX.DialogService;

{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}

// Optional rationale display routine to display permission requirement rationale to the user
procedure TAccessCameraAppForm.DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc);
begin
  var RationaleMsg: string;

  for var I := 0 to High(APermissions) do
  begin
    if APermissions[i] = PermissionCamera then
      RationaleMsg := RationaleMsg + 'The app needs to access the camera to take a photo' + SLineBreak + SLineBreak
    else if APermissions[i] = PermissionReadExternalStorage then
      RationaleMsg := RationaleMsg + 'The app needs to read a photo file from your device';
  end;

  // Show an explanation to the user *asynchronously* - don't block this thread waiting for the user's response!
  // After the user sees the explanation, invoke the post-rationale routine to request the permissions
  TDialogService.ShowMessage(RationaleMsg,
    procedure(const AResult: TModalResult)
    begin
      APostRationaleProc;
    end)
end;

procedure TAccessCameraAppForm.btnTakePhotoClick(Sender: TObject);
begin
  PermissionsService.RequestPermissions([PermissionCamera, PermissionReadExternalStorage, PermissionWriteExternalStorage], TakePicturePermissionRequestResult, DisplayRationale)
end;

procedure TAccessCameraAppForm.TakePicturePermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray);
begin
  // 3 permissions involved: CAMERA, READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE
  if (Length(AGrantResults) = 3) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) and (AGrantResults[2] = TPermissionStatus.Granted) then
    TakePhotoFromCameraAction1.Execute
  else
    TDialogService.ShowMessage('Cannot take a photo because the required permissions are not all granted')
end;

procedure TAccessCameraAppForm.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
  { Assign the image retrieved from the Camera to the TImage component. }
  imgCameraImage.Bitmap.Assign(Image);
end;

end.

Lo compile, luego lo instale en mi android 10. La aplicacion funciono. Me presento un mensaje donde me pedia permisos para acceder a la camara del dispositivo. Le di aceptar. Luego me presento un mensaje, solicitando permiso para acceder a mis fotos. Le di aceptar a esta ultima peticion, y la aplicacion se colgo. Ya no funciono mas. La reinicie. La volvi a ejecutar, y lo mismo. Cada vez que li di permiso para acceder a mis fotos, la aplicacion se colgo. Entonces claramente hay un problema de manejo de permisos, que ni con una aplicacion desarrollada por embarcadero funciona.

Alguna idea.

Saludos.
Jose Miguel.
Responder Con Cita
  #8  
Antiguo 12-03-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Has probado en otro dispositivo?
Responder Con Cita
Respuesta



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
VCL en iOS and Android el-mono Noticias 1 21-12-2020 09:28:09
Reportes Android RebeccaGL Desarrollo en Delphi para Android 1 29-06-2020 09:17:08
SDK 28 no funciona con android 9 Fossy Desarrollo en Delphi para Android 4 16-04-2019 14:38:40
sobre Android SDK Manager y diferentes versiones de Android cocute Desarrollo en Delphi para Android 2 29-11-2017 21:24:00
Solicitar permisos en Android 6 ElGatitoTapatio FireMonkey 2 19-01-2017 19:06:12


La franja horaria es GMT +2. Ahora son las 11:48:54.


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
Copyright 1996-2007 Club Delphi