2017-10-18 21 views
0

Je travaille sur la construction d'une application Android qui prend une photo et la télécharge sur Amazon S3. Mon code semble fonctionner correctement, en ce sens qu'il est en cours d'exécution (confirmé via les points d'arrêt de débogage), mais il ne télécharge pas. Je ne reçois aucun message d'erreur, et les messages log.d que j'ai mis dans l'application n'apparaissent pas dans le logcat.L'application Android S3 ne fonctionne pas. Pas d'erreur

J'utilise ce tutoriel amazon: http://docs.aws.amazon.com/mobile-hub/latest/developerguide/add-aws-mobile-user-data-storage.html#add-aws-mobile-user-data-storage-app

La première fois que je courais le code, je me suis une erreur se plaignant que TransferUtility.builder() na pas avoir .s3Client Je le mettre dans

Code Offending:.

private void uploadImage(){ 
 
     AWSConfiguration awsConfig = 
 
       new AWSConfiguration(getActivity().getApplicationContext()); 
 
     AmazonS3Client s3Client = new AmazonS3Client(IdentityManager.getDefaultIdentityManager() 
 
       .getCredentialsProvider().getCredentials()); 
 

 
     TransferUtility transferUtility = 
 
       TransferUtility.builder() 
 
         .context(getActivity().getApplicationContext()) 
 
         .awsConfiguration(awsConfig) 
 
         .s3Client(s3Client) 
 
         .build(); 
 

 
     TransferObserver uploadObserver = 
 
       transferUtility.upload(
 
         "sniffer-gps-app/UserDogPhotos/"+userId+photoFile.getName(), 
 
         photoFile); 
 

 
     uploadObserver.setTransferListener(new TransferListener() { 
 

 
      @Override 
 
      public void onStateChanged(int id, TransferState state) { 
 
       if (TransferState.COMPLETED == state) { 
 
        //todo something here 
 
        Log.d("S3", "done"); 
 
        nextFragment(); 
 
       } 
 

 
      } 
 

 
      @Override 
 
      public void onProgressChanged(
 
        int id, long bytesCurrent, long bytesTotal) { 
 
       Log.d("S3", "ID: "+id+"\r\nBytesCurrent: "+bytesCurrent+"\r\nBytesTotal: "+bytesTotal); 
 
       // TODO Auto-generated method stub 
 

 
      } 
 

 
      @Override 
 
      public void onError(int id, Exception ex) { 
 
       Log.d("S3", ex.toString()); 
 
       Integer ID = id; 
 
       Log.d("S3", ID.toString()); 
 
      } 
 

 
     }); 
 
    }

photoFile est un objet File.

sniffer-gps-app est le nom du godet

UserDogPhotos est un dossier dans le seau

+0

Avez-vous ajouté l'autorisation d'accéder à l'état du réseau? quelque chose comme ceci: https://github.com/awslabs/aws-sdk-android-samples/blob/master/S3TransferUtilitySample/AndroidManifest.xml#L38 –

+0

Je l'ai vraiment fait. Appels à cognito et dynamoDB fonctionnent très bien. – Reid

Répondre

1

La balise de service dans mon manifeste était en dehors de mon étiquette d'application.