我正在尝试实现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在寻找什么以及在哪里?
答案 0 :(得分:9)
该消息不是错误 - 只是您还没有凭据的通知。不要担心创建由Cognito内部处理的SharedPreferences文件。一旦您通过凭据提供程序执行任何需要它获取凭据的操作,它将自动在内部缓存它们。
答案 1 :(得分:6)
除了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
文件
HOWEVER
没有提到该行需要嵌套在<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>
Android Studio也要求我添加此权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />