简体   繁体   English

如何在Android中使用Java将图像上传到Amazon s3存储桶?

[英]How to upload an image to Amazon s3 bucket using Java in Android?

I am trying to upload an image I took from the camera to the s3 bucket. 我正在尝试将从相机拍摄的图像上传到s3存储桶。

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"us-west-2:xxxxxxxxxxxxx",
Regions.US_WEST_2
);

 AmazonS3Client s3Client = new AmazonS3Client(new AWSCredentials() {
        @Override
        public String getAWSAccessKeyId() {
            return "XXXXXXX";
        }

        @Override
        public String getAWSSecretKey() {
            return "XXXXXXX";
        }
    });


    TransferUtility transferUtility = new TransferUtility(s3Client,getApplicationContext());

transferUtility.upload(MY_BUCKET,file.getName(),file);

My pool is in us-west-2 but my bucket region is in Asia pacific Sydney. 我的游泳池在us-west-2,但我的购物区域在亚太悉尼。

Running the above code crashes and gives me the error below. 运行上面的代码崩溃,并给我下面的错误。

Java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.amazonaws.mobileconnectors.s3.transferutility.TransferService$NetworkInfoReceiver@744215
                                                                                 at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_50043(LoadedApk.java:1282)
                                                                                 at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0(Unknown Source:4)
                                                                                 at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run(Unknown Source:0)
                                                                                 at android.os.Handler.handleCallback(Handler.java:769)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:98)
                                                                                 at android.os.Looper.loop(Looper.java:164)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:6540)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                                              Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10084 nor current process has android.permission.ACCESS_NETWORK_STATE.
                                                                                 at android.os.Parcel.readException(Parcel.java:1948)

I have added permissons and services in the manifest file. 我在清单文件中添加了许可证和服务。 How can I fix this and send an image to s3 bucket in Asia pacific sydney. 如何解决此问题并将图像发送到亚太悉尼的S3存储桶。

I have these permissions under manifest file - 我在清单文件下拥有这些权限-

   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="ANDROID.PERMISSION.ACCESS_NETWORK_STATE" />

正如错误明确指出的那样,您需要在清单中添加android.permission.ACCESS_NETWORK_STATE权限

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM