解析没有当前用户的查询

Parse query with no current user

我在 android 和 IOS 上有一个可用的应用程序。

两者的第一个 activity 是登录屏幕。 第二个 activity 是一个搜索功能,可以让您使用解析找到附近的用户。

不过,我正在尝试让应用程序允许用户无需登录即可进行搜索。

使用 IOS 很容易做到这一点。

在 android 中,我在清单文件中将启动 activity 更改为 activity 2(搜索 activity),它加载正常,但显然没有当前用户。

当我现在尝试 运行 查询时,应用程序停止运行,并且在调试器中它说用户为空。我猜这是这里的问题。

然后我尝试使用以下行在 oncreate 方法中创建一个匿名用户..

  ParseAnonymousUtils.logIn(new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {
            if (e != null) {
                Log.d("MyApp", "Anonymous login failed.");
            } else {
                Log.d("MyApp", "Anonymous user logged in.");
            }
        }
    });

然后失败并显示消息

java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference at com.parse.Parse.getParseDir(Parse.java:499)

虽然很奇怪。如果我将这段代码放在 activity 1 中,它确实有效,但是应用程序在尝试启动时会卡住 activity 2.

有人知道发生了什么事吗?或者如何解决我原来的原始问题?

谢谢

Parse 未初始化时会出现此错误。我猜你把你的 Parse.initialize() 代码放在了你的 activity 中。当你转到另一个时,初始化就丢失了。您需要扩展您的应用程序 class,以便它为整个应用程序保留一个初始化。

public class Application extends android.app.Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Parse.initialize(new Parse.Configuration.Builder(this)
                .applicationId("id")
                .clientKey("key")
                .server("server")
                .enableLocalDataStore()
                .build()
        );
        ParseUser.enableAutomaticUser();
   }
}

这在你的 AndroidManifest.xml

<application
        android:name=".Application"
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">