Исключение сбоя ввода-вывода Java для Android при создании ParseObject - PullRequest
0 голосов
/ 18 февраля 2019

Я запустил экземпляр сервера Parse на AWS, где я хочу хранить свои данные из приложения Android.

В модуле модуля я вставил нижеприведенные зависимости под зависимостями

implementation 'com.parse.bolts:bolts-tasks:1.4.0'
implementation 'com.parse:parse-android:1.17.3'

и создалновое приложение, которое инициализирует конфигурацию разбора

import android.app.Application;

import android.app.Application;
import android.util.Log;

import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseUser;
import com.parse.SaveCallback;

public class StarterApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // Enable Local Datastore.
        Parse.enableLocalDatastore(this);

        // Add your initialization code here
        Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
                .applicationId(myAppId)
                .clientKey(myClientKey)
                .server(serverAddress)
                .build()
        );

        ParseObject object = new ParseObject("ExampleObject");
//        object.put("id", "123");
//        object.put("name", "jack");



        object.saveInBackground(new SaveCallback () {
            @Override
            public void done(ParseException ex) {
                if (ex == null) {
                    Log.i("Parse Result", "Successful!");
                } else {
                    Log.i("Parse Result", "Failed" + ex.toString());
                }
            }
        });


        ParseUser.enableAutomaticUser();

        ParseACL defaultACL = new ParseACL();
        defaultACL.setPublicReadAccess(true);
        defaultACL.setPublicWriteAccess(true);
        ParseACL.setDefaultACL(defaultACL, true);

    }
}

Это все для меня в новинку, и я прохожу трехлетний курс по разработке Android.когда я запускаю это, исключение продолжает ловиться с той же ошибкой:

com.parse.ParseRequest$ParseRequestException: i/o failure

Мой манифест Android выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.parsetest2">

    <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" />

    <application
        android:name=".StarterApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Откуда берется ошибка?как это можно решить?

Ответы [ 2 ]

0 голосов
/ 11 августа 2019

Fixed.По какой-то причине панель инструментов сервера Parse, предоставляемая сервисом AWS.Это, например, http://ec2 -18-220-53-0.us-east-2.compute.amazonaws.com не имеет категории приложений, вы заметите, что это показывает только мой Bitnami ParseAPI без опции приложения.Во-первых, это означает, что вы не можете передавать данные в любое приложение на сервере, которое должно быть доступно.Во-вторых, подключение сервера к вашему Android-приложению не будет работать, так как мастер-ключ в настоящее время фактически отличается от ключа клиента в последнее время.

Вместо AWS используйте Back4App, который будет работать точно так же.Back4App - это масштабируемая серверная служба, основанная на платформе сервера Parse.

Плюсы:

Вам не нужно использовать SSH-клиент для подключения к серверу и получения идентификатора приложения, клиентского ключа илиURL сервераВсе в настройках сервера на приборной панели.

Перейти к Back4App:

Шаг 1: Создать учетную запись на back4app

Шаг 2: Создать приложение, вы можете назвать егоinstagramandroid на основе этого урока

Шаг 3: следуйте всей оставшейся информации по ссылке здесь и все должно работать нормально.https://www.back4app.com/docs/pages/android/how-to-build-an-android-app-on-back4app

Примечание. При добавлении зависимости для разбора самая последняя - 1.17.3.который будет работать очень хорошо, если вы не хотите использовать 1.20.0, я попробовал это и не работает на самом деле.Добавьте его так, как вы обычно добавляете зависимость в своем файле Gradle: 'реализация com.parse: parse-android: 1.17.3'

0 голосов
/ 22 февраля 2019

Основная проблема в том, что вы не подключаетесь к серверу.

[1] - убедитесь, что вы добавили свой идентификатор приложения и идентификатор клиента в AndroidManifest

** change_App_Id_here и _Client_key_here с вашими ключами что-то вроде «ISIGDGU4YGCE673».

<meta-data
            android:name="com.parse.SERVER_URL"
            android:value="https://parseapi.back4app.com" />
        <meta-data
            android:name="com.parse.APPLICATION_ID"
            android:value="_App_Id_Here_" /> //<- put your key
        <meta-data
            android:name="com.parse.CLIENT_KEY"
            android:value="_client_Key_here_" /> //<- put your key

[2] - добавьте репозитории { maven { url 'https://jitpack.io' } } в ваш build.gradle(Project:xyz)

[3] - убедитесь, что вы изменилиПоле .server для вашего сервера синтаксического анализа, AppId и clientKey:

Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
  .applicationId(myAppId)//"myAppId" should be sth like ->"ASHWD63787EDXSG8"
  .clientKey(myClientKey)//should be sth like ->"tdf29yedih287823"
  .server(serverAddress)//something like-> "https://parseapi.back4app.com"
  .build()
        );

получить эти ключи из настроек панели управления вашего сервера -> keys

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...