在我的Android发送器应用中,选择Chromecast接收器后,当应用执行apiClient.connect()
时,logcat会显示NullPointerException的以下堆栈跟踪:
02-16 13:55:10.130: E/AndroidRuntime(7780): FATAL EXCEPTION: main
02-16 13:55:10.130: E/AndroidRuntime(7780): java.lang.NullPointerException
02-16 13:55:10.130: E/AndroidRuntime(7780): at com.google.android.gms.internal.dg.a(Unknown Source)
02-16 13:55:10.130: E/AndroidRuntime(7780): at com.google.android.gms.internal.dw.w(Unknown Source)
02-16 13:55:10.130: E/AndroidRuntime(7780): at com.google.android.gms.internal.dw$f.onServiceConnected(Unknown Source)
02-16 13:55:10.130: E/AndroidRuntime(7780): at com.google.android.gms.internal.dy$a$a.onServiceConnected(Unknown Source)
02-16 13:55:10.130: E/AndroidRuntime(7780): at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1202)
02-16 13:55:10.130: E/AndroidRuntime(7780): at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1219)
02-16 13:55:10.130: E/AndroidRuntime(7780): at android.os.Handler.handleCallback(Handler.java:725)
02-16 13:55:10.130: E/AndroidRuntime(7780): at android.os.Handler.dispatchMessage(Handler.java:92)
02-16 13:55:10.130: E/AndroidRuntime(7780): at android.os.Looper.loop(Looper.java:158)
02-16 13:55:10.130: E/AndroidRuntime(7780): at android.app.ActivityThread.main(ActivityThread.java:5751)
02-16 13:55:10.130: E/AndroidRuntime(7780): at java.lang.reflect.Method.invokeNative(Native Method)
02-16 13:55:10.130: E/AndroidRuntime(7780): at java.lang.reflect.Method.invoke(Method.java:511)
02-16 13:55:10.130: E/AndroidRuntime(7780): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
02-16 13:55:10.130: E/AndroidRuntime(7780): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
02-16 13:55:10.130: E/AndroidRuntime(7780): at dalvik.system.NativeStart.main(Native Method)
我相信我已经正确设置了apiClient,因为我几乎从HelloWorld示例中复制了它的代码。
这是调用apiClient.connect的代码。 Receiver类只是一个POJO,它会在应用程序中传递内容。 listeners是一个内部类的实例,它扩展并实现了所有需要的监听器。
public void launch(Receiver receiver, Activity activity) {
String receiverName = null;
if (receiver != null) {
receiverName = receiver.name;
}
Log.d(TAG, "::launch(" + receiverName + ")");
try {
unlaunch();
launchedReceiver = receiver;
castDevice = launchedReceiver.castDevice;
Builder optionsBuilder = Cast.CastOptions.builder(castDevice,
listeners);
CastOptions options = optionsBuilder.build();
GoogleApiClient.Builder apiBuilder = new GoogleApiClient.Builder(activity);
apiBuilder.addApi(Cast.API, options)
.addConnectionCallbacks(listeners)
.addOnConnectionFailedListener(listeners);
apiClient = apiBuilder.build();
apiClient.connect();
} catch (Exception e) {
Log.e(TAG, "exception launching receiver", e);
}
}
public void unlaunch() {
String receiverName = null;
if (launchedReceiver != null) {
receiverName = launchedReceiver.name;
}
Log.d(TAG, "::launch(" + receiverName + ")");
}
从堆栈跟踪中搜索各种短语到目前为止还没有找到任何有用的短语。
有没有人对此有所了解?我花了几个小时尝试但到目前为止没有运气。我将继续进行实验,但我可以使用一两个指针来指明这一点。
答案 0 :(得分:0)
我遇到同样的问题 - 再次与Google Play服务4.2相关。我的应用确实使用了Chromecast,但在我的情况下,这种崩溃发生在应用启动时(甚至没有尝试连接到Chromecast设备)。
虽然我在测试设备上没有看到这个问题,但是当用户从旧版本的应用程序(未使用Google Play服务)升级到较新版本(用于Chromecast支持)时,问题首先出现。这发生在2个不同设备(手机和平板电脑)上的同一个用户身上。在这两种情况下,他都可以通过卸载和重新安装应用程序来恢复。这可能已经清除了应用程序设置/缓存等中的某些内容,使其正常工作。
附件是我的异常处理捕获的下面的堆栈跟踪(异常与原始问题中的异常完全相同):
[ java.lang.NullPointerException ] nulljava.lang.NullPointerException
at com.google.android.gms.internal.dg.a(Unknown Source)
at com.google.android.gms.internal.dw.w(Unknown Source)
at com.google.android.gms.internal.dw$f.onServiceConnected(Unknown Source)
at com.google.android.gms.internal.dy$a$a.onServiceConnected(Unknown Source)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1097)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1114)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4962)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
at dalvik.system.NativeStart.main(Native Method)