2017-05-05 5 views
0

Android에 S3에 업로드하려고합니다. 그러나 실제로 이미지를 업로드하지는 않습니다.android의 s3 버킷에 업로드하는 중에 오류가 발생했습니다.

D/CognitoCachingCredentialsProvider : 내가 볼 오류를 닮은 유일한 것은 이것이다 그것을 인터넷 검색을 할 때 된 SharedPreferences

에있는 유효한 자격 증명 그러나, 나는 다양한 충돌하는 정보를 찾을 수 없습니다. 내가 발견 할 수있는 유일한 사실은 이것이 프로젝트에인지 프레임 워크를 제대로 추가하지 않아 발생할 수 있지만 build.gradle에 있음을 확인했습니다.

나는 동일한 자격 증명을 사용하여 iOS에서 제대로 작동한다는 점도 유의해야합니다. 플랫폼 당 다른 ID 풀을 사용해야한다는 언급이있었습니다. 그래서 Android 용 새 ID 풀을 만들고 일치하는 사용 권한이 있는지 확인했는데 작동하지 않았습니다. iOS가 잘 작동하고 문제없이 이미지를 업로드하는 방법을 고려할 때 Android에서 사용하는 코드로 뭔가가 있어야한다고 생각합니다. 나는 그것을 아래에 포함시켰다.

실제로 S3

public void saveImage(Context context, Bitmap data, String key, Double lat, Double lon) { 

    exifBuilder = new ExifBuilder(mContext, lat, lon); 

    File file = writeImageToFile(context, data); 
    s3 = new AmazonS3Client(getCreadentials(context)); 

    if (file != null) { 

     TransferUtility transferUtility = new TransferUtility(s3, context.getApplicationContext()); 
     TransferObserver observer = transferUtility.upload(
       BUCKET_NAME, 
       key, 
       file 
     ); 
    } 
} 

나는 파일이 null이 아닌 것을 확인했습니다에 이미지를 저장 cognito

private CognitoCachingCredentialsProvider getCreadentials(Context context) { 
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
        context.getApplicationContext(), 
        IDENTITY_POOL_ID, 
        Regions.US_EAST_1 
      ); 

    return credentialsProvider; 
} 

그리고 기능에서 자격 증명을 얻기 위해이 기능이있다. 또한 올바른 ID 풀 ID인지 확인했습니다.

누락 된 항목이 있습니까?

답변

0

위의 코드에서 문제를 발견 할 수 없습니다. 내가 제공 한 "오류"는 관련이 없으며 이전에인지 서비스가 이전에 해당 기기에 대한 사용자 ID를 설정하지 않았 음을 의미합니다. 그러나 문제는 위 이미지를 S3에 저장하기 위해 호출 된 함수가 uithread에서 호출되었으며 네트워크 활동이 UI 스레드에서 발생할 수 없기 때문에 호출하지 못했습니다. 내가 CredentialProvider.getProviderId()를 출력하려고 시도한 후에 이것을 알아 낸 결과 그 오류가 발생했습니다.

관련 문제