0

我正在尝试按照 Nearby Connections API 此处的文档使用Nearby Connections API。为此,我使用了两个设备。这些设备开始做广告和发现就好了。但是在 ConnectionLifecycleCallback 的 onConnectionInitiated() 方法中接受连接时,应用程序崩溃并抛出此错误:

E/AndroidRuntime:致命异常:主进程:com.example.testapp,PID:20824 java.lang.NullPointerException:com.google.android.gms.common.internal.Preconditions.checkNotNull(com.google .android.gms:play-services-basement@@18.0.0:2) 在 com.google.android.gms.common.api.internal.ListenerHolders.createListenerHolder(com.google.android.gms:play-services-base @@18.0.1:1) 在 com.google.android.gms.common.api.GoogleApi.registerListener(com.google.android.gms:play-services-base@@18.0.1:1) 在 com.google .android.gms.internal.nearby.zzcn.acceptConnection(com.google.android.gms:play-services-nearby@@18.0.0:1) 在 com.example.testapp.ConnectionHelper$1.onConnectionInitiated(ConnectionHelper.java: 38) 在 com.google.android.gms.internal.nearby.zzck.onConnectionInitiated(com.google.android.gms:play-services-nearby@@18.0.0:3) 在 com。com.google.android.gms.common.api.internal 上的 google.android.gms.internal.nearby.zzaa.notifyListener(com.google.android.gms:play-services-nearby@@18.0.0:9)。 ListenerHolder.zaa(com.google.android.gms:play-services-base@@18.0.1:2) at com.google.android.gms.common.api.internal.zacb.run(Unknown Source:4) at android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:233) 在 android.app.ActivityThread .main(ActivityThread.java:8010) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631) 在 com.android.internal .os.ZygoteInit.main(ZygoteInit.java:978)internal.ListenerHolder.zaa(com.google.android.gms:play-services-base@@18.0.1:2) at com.google.android.gms.common.api.internal.zacb.run(Unknown Source:4 ) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:233) 在 android.app .ActivityThread.main(ActivityThread.java:8010) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631) 在 com.android .internal.os.ZygoteInit.main(ZygoteInit.java:978)internal.ListenerHolder.zaa(com.google.android.gms:play-services-base@@18.0.1:2) at com.google.android.gms.common.api.internal.zacb.run(Unknown Source:4 ) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:233) 在 android.app .ActivityThread.main(ActivityThread.java:8010) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631) 在 com.android .internal.os.ZygoteInit.main(ZygoteInit.java:978)在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller 的 java.lang.reflect.Method.invoke(Native Method) 的 android.app.ActivityThread.main(ActivityThread.java:8010) 的循环(Looper.java:233)。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978) 运行(RuntimeInit.java:631)在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller 的 java.lang.reflect.Method.invoke(Native Method) 的 android.app.ActivityThread.main(ActivityThread.java:8010) 的循环(Looper.java:233)。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978) 运行(RuntimeInit.java:631)

ConnectionLifecycleCallback 的代码如下所示:

connectionLifecycleCallback = new ConnectionLifecycleCallback() {
@Override
public void onConnectionInitiated(String endpointId, ConnectionInfo connectionInfo) {
    // Automatically accept the connection on both sides.
    Nearby.getConnectionsClient(context).acceptConnection(endpointId, payloadCallback);
}
@Override
public void onConnectionResult(String endpointId, ConnectionResolution result) {
    switch (result.getStatus().getStatusCode()) {
        case ConnectionsStatusCodes.STATUS_OK:
            // We're connected! Can now start sending and receiving data.
            break;
        case ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED:
            // The connection was rejected by one or both sides.
            break;
        case ConnectionsStatusCodes.STATUS_ERROR:
            // The connection broke before it was able to be accepted.
            break;
        default:
            // Unknown status code
    }
}
@Override
public void onDisconnected(String endpointId) {
    // We've been disconnected from this endpoint. No more data can be
    // sent or received.
}

EndpointDiscoveryCallback 的代码如下所示:

endpointDiscoveryCallback = new EndpointDiscoveryCallback(
@Override
public void onEndpointFound(String endpointId, Discove
    // An endpoint was found. We request a connection 
    Nearby.getConnectionsClient(context)
            .requestConnection(getLocalUserName(), end
            .addOnSuccessListener(
                    (Void unused) -> {
                        testActivity.textView.setText(
                        // We successfully requested a
                        // must accept before the conn
                    })
            .addOnFailureListener(
                    (Exception e) -> {
                        // Nearby Connections failed t
                    });
}
@Override
public void onEndpointLost(String endpointId) {
    // A previously discovered endpoint has gone away.
}

如果有人能指导我完成这件事,我将不胜感激!

4

0 回答 0