Android parse.com saving installation error. object not found for update

I get this error below and have no idea what to do with it. I don’t even know what code is here, because I can’t find where in my code it causes this error. There is another important thing: this error does not occur on my first test device, which is an incredible running Android 4.0.4, but the second test device, which is a Samsung tablet running on 4.4.2, receives this error.

edit: I think this has something to do with my syntax installation object, since it is not stored in the database for the second device. In my code, I have:

 ParseInstallation UserPushObj = ParseInstallation.getCurrentInstallation();
 System.out.println(UserPushObj.getObjectId());

And it returns a parse installation object with an identifier for an object that is not in the database. I am doing my best

 UserPushObj.saveInBackground();

but it is not saved. Can someone point me to the right path, what can I do to fix this?

E/ParseCommandCache(8040): Failed to run command.
E/ParseCommandCache(8040): com.parse.ParseException: object not found for update
E/ParseCommandCache(8040):  at com.parse.ParseCommand.onPostExecute(ParseCommand.java:334)
 E/ParseCommandCache(8040):     at com.parse.ParseRequest$5.then(ParseRequest.java:321)
E/ParseCommandCache(8040):  at com.parse.ParseRequest$5.then(ParseRequest.java:318)
E/ParseCommandCache(8040):  at com.parse.Task$11.run(Task.java:481)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeAfterTask(Task.java:477)
E/ParseCommandCache(8040):  at com.parse.Task.continueWithTask(Task.java:353)
E/ParseCommandCache(8040):  at com.parse.Task.continueWithTask(Task.java:364)
E/ParseCommandCache(8040):  at com.parse.Task$9.then(Task.java:410)
E/ParseCommandCache(8040):  at com.parse.Task$9.then(Task.java:402)
E/ParseCommandCache(8040):  at com.parse.Task$11.run(Task.java:481)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeAfterTask(Task.java:477)
E/ParseCommandCache(8040):  at com.parse.Task.access$400(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$7.then(Task.java:346)
E/ParseCommandCache(8040):  at com.parse.Task$7.then(Task.java:343)
E/ParseCommandCache(8040):  at com.parse.Task.runContinuations(Task.java:510)
E/ParseCommandCache(8040):  at com.parse.Task.access$800(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:565)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.setResult(Task.java:599)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:493)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:485)
E/ParseCommandCache(8040):  at com.parse.Task$10.run(Task.java:448)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeImmediately(Task.java:444)
E/ParseCommandCache(8040):  at com.parse.Task.access$300(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$6.then(Task.java:311)
E/ParseCommandCache(8040):  at com.parse.Task$6.then(Task.java:308)
E/ParseCommandCache(8040):  at com.parse.Task.runContinuations(Task.java:510)
E/ParseCommandCache(8040):  at com.parse.Task.access$800(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:565)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.setResult(Task.java:599)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:493)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:485)
E/ParseCommandCache(8040):  at com.parse.Task$10.run(Task.java:448)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeImmediately(Task.java:444)
E/ParseCommandCache(8040):  at com.parse.Task.access$300(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$6.then(Task.java:311)
E/ParseCommandCache(8040):  at com.parse.Task$6.then(Task.java:308)
E/ParseCommandCache(8040):  at com.parse.Task.runContinuations(Task.java:510)
E/ParseCommandCache(8040):  at com.parse.Task.access$800(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:565)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.setResult(Task.java:599)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:493)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:485)
E/ParseCommandCache(8040):  at com.parse.Task$10.run(Task.java:448)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeImmediately(Task.java:444)
E/ParseCommandCache(8040):  at com.parse.Task.continueWith(Task.java:318)
E/ParseCommandCache(8040):  at com.parse.Task.continueWith(Task.java:329)
E/ParseCommandCache(8040):  at com.parse.Task$11.run(Task.java:485)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeAfterTask(Task.java:477)
E/ParseCommandCache(8040):  at com.parse.Task.access$400(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$7.then(Task.java:346)
E/ParseCommandCache(8040):  at com.parse.Task$7.then(Task.java:343)
E/ParseCommandCache(8040):  at com.parse.Task.runContinuations(Task.java:510)
E/ParseCommandCache(8040):  at com.parse.Task.access$800(Task.java:22)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:565)
E/ParseCommandCache(8040):  at com.parse.Task$TaskCompletionSource.setResult(Task.java:599)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:493)
E/ParseCommandCache(8040):  at com.parse.Task$11$1.then(Task.java:485)
E/ParseCommandCache(8040):  at com.parse.Task$10.run(Task.java:448)
E/ParseCommandCache(8040):  at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
E/ParseCommandCache(8040):  at com.parse.Task.completeImmediately(Task.java:444)
E/ParseCommandCache(8040):  at com.parse.Task.continueWith(Task.java:318)
E/ParseCommandCache(8040):  at com.parse.Task.continueWith(Task.java:329)
E/ParseCommandCache(8040):  at com.parse.Task$11.run(Task.java:485)
E/ParseCommandCache(8040):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/ParseCommandCache(8040):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/ParseCommandCache(8040):  at java.lang.Thread.run(Thread.java:841)
+4
source share
2 answers

It seems that ParseInstallation does not exist in Parse DB ... Therefore, one of the solutions I found is to uninstall / install the application.

+1
source

Force Parse to reinitialize by deleting its files

public static void removeCurrentInstallation(Context context) {
    File filesDir = context.getDir("Parse", Context.MODE_PRIVATE);
    boolean exists = filesDir.exists();
    File[] files = filesDir.listFiles();
    if (exists && filesDir.length() > 0) {
        for (File file : files) {
            if (file.isFile())
                file.delete();
        }
    }
}

use it in application class

    ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (e == null) {
                Log.i("Parse", "Installation saved successfully");
            } else {
                Log.e("Parse", "Installation failed to save: " + e);
                if (e.getCode() == ParseException.OBJECT_NOT_FOUND) {
                    removeCurrentInstallation(getApplicationContext());
                }
            }
        }
    });
+1
source

Source: https://habr.com/ru/post/1547332/


All Articles