为何在AWS中未触发setTransferListener?

为何在AWS中未触发setTransferListener?,第1张

概述我正在尝试将照片从android上传到S3,并且我在S3网站上遵循的最新 *** 作方法为tutorial,但似乎未触发TransferObserver.我所有的变量都是全局声明的.当我运行此代码时:credentialsProvider=newCognitoCachingCredentialsProvider(getAppl

我正在尝试将照片从android上传到S3,并且我在S3网站上遵循的最新 *** 作方法为tutorial,但似乎未触发TransferObserver.我所有的变量都是全局声明的.当我运行此代码时:

               credentialsProvIDer = new CognitoCachingCredentialsProvIDer(                        getApplicationContext(),                        "us-east-SECRET", // IDentity Pool ID                        Regions.US_EAST_1 // Region                );                    // Instantiate an S3 ClIEnt                    // Create an S3 clIEnt                    s3 = new AmazonS3ClIEnt(credentialsProvIDer);                    // Set the region of your s3 bucket                    s3.setRegion(Region.getRegion(Regions.DEFAulT_REGION));                    // Instantiate TransferUtility                    transferUtility = new TransferUtility(s3, getApplicationContext());                    //Upload a file to amazon s3                    Log.i("imagefile", imagefile.toString());                    observer = transferUtility.upload(                            "foond",     /* The bucket to upload to */                            "key",    /* The key for the uploaded object */                            imagefile        /* The file where the data to upload exists */                    );                    Log.i("observer", observer.getabsolutefilePath());                    Log.i("observer", observer.toString());                    Log.i("observer", observer.getState().toString());                    Log.i("observer", String.valueOf(observer.getBytesTransferred()));                    observer.setTransferListener(new TransferListener() {                        @OverrIDe                        public voID onStateChanged(int ID, TransferState state) {                            Log.i("ID", String.valueOf(ID));                            Log.i("TransferState", String.valueOf(state));                        }                        @OverrIDe                        public voID onProgressChanged(int ID, long bytesCurrent, long bytesTotal) {                            Log.i("ID", String.valueOf(ID));                            Log.i("bytesCurrent", String.valueOf(bytesCurrent));                            Log.i("bytesTotal", String.valueOf(bytesTotal));                        }                        @OverrIDe                        public voID one rror(int ID, Exception ex) {                            Log.e("Error", String.valueOf(ex));                        }                    });                    Log.i("observer", observer.getState().toString());                    Log.i("observer", String.valueOf(observer.getBytesTransferred()));

我在控制台中得到的是

I/Openglrenderer: Initialized EGL, version 1.4W/art: Suspending all threads took: 21.244msD/CognitoCachingCredentialsProvIDer: Loading credentials from SharedPreferencesI/imagefile: /storage/emulated/0/DCIM/Camera/img_20160223_134442.jpgV/RenderScript: 0x9ab29000 Launching thread(s), cpus 4I/Observer: /storage/emulated/0/DCIM/Camera/img_20160223_134442.jpgI/Observer: com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver@6e1c6dfW/art: Suspending all threads took: 9.843msI/Observer: WAITINGI/Observer: 0I/Observer: WAITINGI/Observer: 0

在我看来,没有日志在setTransferListener中打印出来.为什么会这样呢?另外,应注意,图像未上传到S3.

这是我对清单的权限

<uses-permission androID:name="androID.permission.INTERNET"/><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE"/><uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE"/><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION"/><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION"/>

这是我导入的依赖项:

compile 'com.amazonaws:aws-androID-sdk-core:2.+'compile 'com.amazonaws:aws-androID-sdk-cognito:2.+'compile 'com.amazonaws:aws-androID-sdk-s3:2.+'compile 'com.amazonaws:aws-androID-sdk-ddb:2.+'

我知道我对S3和cognito的设置是正确的,因为我使用了github中提供的示例代码,并且有一个要上传的文件.问题是代码不适合我在androID studio中运行的androID版本,并且我不想经历降级版本的麻烦.

这是我在gradle中的配置

compileSdkVersion 23buildToolsversion "23.0.2"defaultConfig {    applicationID "xxxxxxxxx"    minSdkVersion 15    targetSdkVersion 23    versionCode 1    versionname "1.0"}

TL; DR:TransferObserver观察器= transferUtility.upload无法正常工作.并且图像没有被上传.

解决方法:

只需在清单中注明(提及服务)即可.

<service    androID:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"    androID:enabled="true" />
总结

以上是内存溢出为你收集整理的为何在AWS中未触发setTransferListener?全部内容,希望文章能够帮你解决为何在AWS中未触发setTransferListener?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120644.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存