我在将AmazonS3PersonalFileStore演示应用登录集成到我的应用程序时遇到问题
我已经设置了我的TVM,在演示应用程序上一切正常,当我复制/粘贴项目并重命名时,它也能正常运行。
当我开始将我的.javas从我的主应用程序粘贴到粘贴的演示应用程序中时出现问题,现在当我登录时,我收到错误
凭证问题! AWS Credentials配置不正确。请查看自述文件。
自述文件指的是项目设置和.properties文件,所有这些都没有触及
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amazonaws.demo.personalfilestore"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".S3PersonalFileStore"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Login"></activity>
<activity android:name=".s3.S3BucketView"></activity>
<activity android:name=".s3.S3ObjectView"></activity>
<activity android:name=".s3.S3AddObjectView"></activity>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.MainMenu"
android:label="@string/main_menu" />
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.TripMain"
android:label="@string/trips"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.TripView"
android:label="@string/trip_view"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.DiagnosticsMain"
android:label="@string/diagnostics"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.DtcListView"
android:label="@string/dtcs"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.RpmComparison"
android:label="@string/rpm_distribution"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.UbiMain"
android:label="@string/ubi"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.UbiView"
android:label="@string/ubi_view"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.UsageMain"
android:label="@string/usage"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.EnvironmentalMain"
android:label="@string/environmental_main"/>
<activity
android:screenOrientation="portrait"
android:name="com.example.indrive.ComparisonMain"
android:label="@string/vehicle_comparison"/>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="xxxxxxxx"/>
</application>
</manifest>
虽然我已经添加了新代码,但我很确定它们都没有运行,因为我的所有活动都没有被创建
更新:我尝试使用与IAM TVMUser相同的权限向TVM Elastic Beanstalk添加EC2角色,但演示应用程序甚至无法正常工作
更新2:为TVM IAM User / Elastic Beanstalk尝试了一堆不同的IAM配置,没有任何效果
答案 0 :(得分:0)
将AmazonS3PersonalFileStore演示应用程序登录集成到我的应用程序时遇到了同样的问题。
问题是通过HTTP请求向TVM发出的请求被阻止了。这是因为android sdk的StrictMode.ThreadPolicy不允许网络操作在UI线程上执行。
可以使用以下方式更改此限制:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
将以上代码添加到您的主要活动的onCreate()方法中。
此外,始终建议将网络操作从UI线程移开,例如,使用AsyncTask。
我相信这会解决你的问题。