1

我正在尝试实现 Amazon 提供的用于连接到 DynamoDb 的示例代码。第一步是客户端的初始化,亚马逊表示要在常量类中定义凭证并按如下方式使用它们:

private void initClients() {
    CognitoCachingCredentialsProvider credentials = new CognitoCachingCredentialsProvider(
            context,
            Constants.ACCOUNT_ID,
            Constants.IDENTITY_POOL_ID,
            Constants.UNAUTH_ROLE_ARN,
            null,
            Regions.US_EAST_1);

当我执行代码时,我得到以下信息: D/CognitoCachingCredentialsProvider:从 SharedPreferences 加载凭据 D/CognitoCachingCredentialsProvider:在 SharedPreferences 中找不到有效凭据

然后我创建了一个 SharedPreferences 文件并将凭据放入其中,但仍然出现相同的错误。有谁知道在这种情况下 CognitoCachingCredentialsProvider 正在寻找什么以及在哪里寻找?

4

3 回答 3

9

该消息不是错误 - 只是您还没有凭据的通知。不必担心创建由 Cognito 内部处理的 SharedPreferences 文件。一旦您通过凭据提供程序执行任何需要获取凭据的操作,它将在内部自动缓存它们。

于 2014-10-30T22:13:26.470 回答
7

除了 Viktor Burmaka 给出的答案,我想指出亚马逊指南(http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/s3transferutility.html)有点不完整。

它说要添加该行:

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

androidmanifest.xml文件

然而

它没有提到该行需要<application></application>像这样嵌套在标签中:

<application>
    ...
    <service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" android:enabled="true" />
    ...
</application>

我通过 Android 文档找到了这个:https ://developer.android.com/guide/topics/manifest/service-element.html

其中说:

<service>
SYNTAX:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    . . .
</service>
CONTAINED IN:
<application>

NETWORK_STATE 权限

Android Studio 还要求我添加此权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2017-05-10T09:14:35.150 回答
3

请检查您的清单文件。我使用 s3,错过时我也有同样的情况

 <service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
android:enabled="true" />
于 2017-05-08T09:46:00.013 回答