Я пытаюсь следовать точному примеру DynamoDB для книги БД (http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/dynamodb_om.html), но мои приложения авария на этапеAndroid DynamoDB mapper.save аварии
mapper.save(book)
(это работает, если я закомментировать эту строку).
Просмотрите ниже и помогите мне выяснить, в чем проблема. Спасибо !
Вот сообщение об ошибке:
07-09 20: 00: 03,652 2458-2458/com.aegisofsoteria.aegisofsoteria D/CognitoCachingCredentialsProvider: Загрузка учетных данных от SharedPreferences 07-09 20: 00: 03.652 2458-2458/com.aegisofsoteria.aegisofsoteria D/CognitoCachingCredentialsProvider: Нет действительных учетных данных, найденных в SharedPreferences 07-09 20: 00: 03.673 2458-2458/com.aegisofsoteria.aegisofsoteria D/AndroidRuntime: выключение VM 07-09 20: 00: 03.674 2458-2458/com.aegisofsoteria.aegisofsoteria E/AndroidRuntime: FATAL EXCEPTION: main Процесс: com.aegisofsoteria.aegi sofsoteria, ПИД: 2458 java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {com.aegisofsoteria.aegisofsoteria/com.aegisofsoteria.aegisofsoteria.SignInActivity}: android.os.NetworkOnMainThreadException в android.app.ActivityThread.performLaunchActivity (ActivityThread. java: 2416) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) at android.app.ActivityThread.-wrap11 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java : 1344) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5417) в java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 726) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) Вызванный: android.os.NetworkOnMainThreadException в android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1273) на java.net.InetAddress.lookupHostByName (InetAddress.java:431) на java.net.InetAddress.getAllByNameImpl (InetAddress.java:252) на java.net.InetAddress.getAllByName (I netAddress.java:215) at com.android.okhttp.internal.Network $ 1.resolveInetAddresses (Network.java:29) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress (RouteSelector.java:188) на com.android.okhttp.internal.http.RouteSelector.nextProxy (RouteSelector.java:157) на com.android.okhttp.internal.http.RouteSelector.next (RouteSelector.java:100) на com.android.okhttp .internal.http.HttpEngine.createNextConnection (HttpEngine.java:357) at com.android.okhttp.internal.http.HttpEngine.nextConnection (HttpEngine.java:340) at com.android.okhttp.internal.http.HttpEngine .connect (HttpEngine.java:330) at com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:248) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.Java: 433) в com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect (HttpURLConnectionImpl.java:114) на com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream (HttpURLConnectionImpl.java:245) на com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream (DelegatingHttpsURLConnection.java:218) на com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java) в com.amazonaws.http.UrlHttpClient. writeContentToConnection (URL-адрес: http: uteHelper (AmazonHttpClient.java:356) в com.amazonaws.http.AmazonHttpClient.execute (AmazonHttpClient.java:199) в com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.invoke (AmazonCognitoIdentityClient.java:558) на ком. amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.getId (AmazonCognitoIdentityClient.java:444) на com.amazonaws.auth.AWSAbstractCognitoIdentityProvider.getIdentityId (AWSAbstractCognitoIdentityProvider.java:172) на com.amazonaws.auth.CognitoCredentialsProvider.getIdentityId (CognitoCredentialsProvider.java: 340) at com.amazonaws.auth.CognitoCachingCredentialsProvider.getIdentityId (CognitoCachingCredentialsProvider.java:422) на com.aegisofsoteria.aegisofsoteria.SignInActivity.BookDBExample (SignInActivity.java:203) в com.aegisofsoteria.aegisofsoteria.SignInActivity.onStart (SignInActivity.java:124) в android.app.Instrumentation.callActivityOnStart (Instrumentation.java: 1237) на android.app.Activity.performStart (Activity.java:6253) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2379) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) на android.app.ActivityThread.-wrap11 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThrea d.java:1344) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread. java: 5417) at java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) at com.android.internal.os .ZygoteInit.main (ZygoteInit.java:616)
Вот мой код:
он находится внутри
public class SignInActivity extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {
и код выглядит следующим образом:
private void BookDBExample(){
// Initialize the Amazon Cognito credentials provider
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
my_PollID_here, // Identity Pool ID
Regions.US_EAST_1 // Region
);
Toast.makeText(getApplicationContext(), "my ID" + credentialsProvider.getIdentityId(), Toast.LENGTH_SHORT).show();
AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);
DynamoDBMapper mapper = new DynamoDBMapper(ddbClient);
Book book = new Book();
book.setTitle("Great Expectations");
book.setAuthor("Charles Dickens");
book.setPrice(1299);
book.setIsbn("1234567890");
book.setHardCover(false);
try {
mapper.save(book);
} catch (AmazonServiceException ase) {
// The conditional check failed.
Toast.makeText(getApplicationContext(), "ASE:" + ase.getMessage(), Toast.LENGTH_LONG).show();
} catch (AmazonClientException ace){
Toast.makeText(getApplicationContext(), "ACE:" + ace.getMessage(), Toast.LENGTH_LONG).show();
}
}
Две вещи, которые могут действовать как намек:
даже подвох ошибка не может остановить его от аварии. Зачем ?
В чем смысл «Нет действительных учетных данных, найденных в SharedPreferences»? Я настроил Cognito, IAM, DB точно так же, как пример AWS, и единственное различие заключается в том, что я не могу найти «Attach Role Policy» на IAM. Возможные варианты: «Политика присоединения» или «Создать политику ролей». Поэтому я должен использовать «Создать политику ролей», чтобы завершить этот конкретный шаг.
Спасибо.
Спасибо. Оно работает. –