从解析安装表中删除一行来自android

时间:2015-06-03 13:23:59

标签: android parse-platform

我已经设置了解析和推送通知工作正常。

我想要实现的目标是删除包含旧版“installId”的行(安装实例)。当重新安装app时,会生成一个新的installationId,并且在我自己的服务器中保存新的installationId之后,我希望android设备从包含旧id的解析db中删除该行。

我已经关注了两个教程:

i)Delete a row from Parse Table ii)https://www.parse.com/questions/delete-row

代码 - (根据第一个教程):

ParseQuery<ParseObject> query = ParseQuery.getQuery("Installation");
        query.whereEqualTo("installationId", "9702fcb1-5912-43fa-9248-5f18bd398485");
        query.getFirstInBackground(new GetCallback<ParseObject>() {
            @Override
            public void done(ParseObject parseObject, ParseException e) {
                try {
                    parseObject.delete();
                    parseObject.saveEventually();
                }catch(ParseException ex){
                    ex.printStackTrace();
                }
            }
        });

错误(Logcat):

4052-4052/com.pbc.pchakraverti.enotice E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.pbc.pchakraverti.enotice, PID: 4052
    java.lang.NullPointerException: Attempt to invoke virtual method 'void com.parse.ParseObject.delete()' on a null object reference
            at com.example.pchakraverti.enotice.clgIdVerificationActivity$1.done(clgIdVerificationActivity.java:68)
            at com.example.pchakraverti.enotice.clgIdVerificationActivity$1.done(clgIdVerificationActivity.java:64)
            at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:107)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

代码 - 根据解析文档:

ParseObject.createWithoutData("Installation", "IHgT4Gbszs").deleteEventually();

在这种情况下,没有例外,但该行不会被删除!

我的目标是安装&#39;解析类。 Parse Installation Class

更新

ParseQuery<ParseInstallation> query = ParseInstallation.getQuery();
        query.whereEqualTo("installationId", "9702fcb1-5912-43fa-9248-5f18bd398485");
        query.getFirstInBackground(new GetCallback<ParseInstallation>() {
            @Override
            public void done(ParseInstallation parseInstallation, ParseException e) {
                try {
                    parseInstallation.delete();
                    parseInstallation.saveInBackground();
                }catch(ParseException ex){
                    ex.printStackTrace();
                }
            }
        });

此代码运行没有问题,但该条目未从解析服务器中删除。

2 个答案:

答案 0 :(得分:2)

我认为您需要使用ParseInstallation.getQuery()代替ParseQuery.getQuery("Installation")

答案 1 :(得分:0)

你不被允许这样做

这行代码:

ParseObject parseObject = ParseInstallation.getQuery().getFirst();

抛出异常:

com.parse.ParseRequest$ParseRequestException: Clients aren't allowed to perform the find operation on the installation collection.