Ich liebe das Konzept der Pre-Launch-Tests, aber meine Wear-App stürzte beim Testen ab, während ich immer noch mit echten Geräten arbeitete. Vermutlich, weil an den Testgeräten keine Wear-Geräte angeschlossen sind? (Ich nehme an, sie sind nicht).Wann kann Google NodeApi.getLocalNode null zurückgeben?
Hier ist der Fehler, den ich bei einem Aufruf von GetLocalNode bekomme. Ich kann keine Dokumentation darüber finden, wann getNode null sein könnte, und ich rate nur, dass es in früheren Versionen von Play möglicherweise null ist, wenn der lokale Knoten nicht mit anderen Knoten verbunden ist.
Kann jemand dies entweder bestätigen/ablehnen oder auf den entsprechenden Code in 9.x und 8.x von Google Play Services NodeApi verweisen?
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String com.google.android.gms.wearable.Node.getId()' on a null object reference
at com.pipperpublishing.refwatch.RefWatchUtil$4.onResult(RefWatchUtil.java:329)
at com.pipperpublishing.refwatch.RefWatchUtil$4.onResult(RefWatchUtil.java:326)
at com.google.android.gms.common.api.internal.zzb$zza.zzb(Unknown Source)
at com.google.android.gms.common.api.internal.zzb$zza.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6934)
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:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Hier der entsprechende Code ist, die auf einer der Proben genau modelliert wird:
public static void fetchLocalDataMap(final GoogleApiClient client,
final String dataPath,
final FetchLocalDataMapCallback callback) {
Wearable.NodeApi.getLocalNode(client).setResultCallback(
//get the local node asynchronously and then call back to get local data
new ResultCallback<NodeApi.GetLocalNodeResult>() {
@Override
public void onResult(NodeApi.GetLocalNodeResult getLocalNodeResult) {
String localNode = getLocalNodeResult.getNode().getId();
Uri uri = new Uri.Builder()
.scheme("wear")
.path(dataPath)
.authority(localNode)
.build();
//get only locally created (this node's) data
Wearable.DataApi.getDataItem(client, uri)
.setResultCallback(new DataItemResultCallback(callback));
}
}
);
}
By the way, es gibt keinen Vorschlag in einem der Dokumentation oder Proben, die getLocalNodeResult.getNode() konnte nie null zurückgeben :)