gradle
implementation platform('software.amazon.awssdk:bom:2.17.119') implementation 'software.amazon.awssdk:s3'Código utilizado para obtener la URL prefirmada
public static URL getPresignedUrl(String bucketName, String keyName ) { PresignedGetObjectRequest presignedGetObjectRequest = null; try { AwsCredentialsProvider credentialsProvider = StaticCredentialsProvider.create (AwsBasicCredentials.create(Access Key, Secret Key)); S3Presigner preSigner = S3Presigner.builder() .credentialsProvider(credentialsProvider) .region(Region.US_WEST_2).build(); GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket(bucketName) .key(keyName) .build(); GetObjectPresignRequest getObjectPresignRequest = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { getObjectPresignRequest = GetObjectPresignRequest.builder() .signatureDuration(Duration.ofDays(1)) .getObjectRequest(getObjectRequest) .build(); } // Generate the presigned request presignedGetObjectRequest = preSigner.presignGetObject(getObjectPresignRequest); } catch (Exception e) { e.getStackTrace(); } return presignedGetObjectRequest.url(); }La aplicación funciona bien si la versión de fire OS es mayor o igual a 7.xx Se bloquea en fire OS versión 5.xx
Bloqueo en la línea S3Presigner preSigner = S3Presigner.builder()
Necesitas ayuda
Sin un conocimiento exacto de las versiones, es difícil detectar el motivo directamente.
Pero puedes intentarlo tú mismo separando las sentencias concatenadas:
Actualmente:
S3Presigner preSigner = S3Presigner.builder() .credentialsProvider(credentialsProvider) .region(Region.US_WEST_2).build();Nuevo:
S3Presigner preSigner = S3Presigner.builder(); preSigner = preSigner.credentialsProvider(credentialsProvider); preSigner = preSigner.region(Region.US_WEST_2): preSigner = preSigner.build(); No soy firme con Java ni con la API de Fire OS, por lo que es muy posible que mi código no funcione incluso en las versiones de Fire OS y haya que cambiar un poco.
Sin embargo, creo que puede tener la idea de desentrañar todas las declaraciones para ver qué parte causa el problema.
Después de saber esto, puede ver si falta la función correspondiente en Fire OS 5 o si tiene que cambiar los parámetros.