我正在尝试按照 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.
}
如果有人能指导我完成这件事,我将不胜感激!