在安装我的应用程序本身时,我得到了以下NPE。请帮帮忙。
07-22 16:27:06.380: E/UA AP(6071): Unable to takeOff automatically
07-22 16:27:06.385: D/AndroidRuntime(6071): Shutting down VM
07-22 16:27:06.385: W/dalvikvm(6071): threadid=1: thread exiting with uncaught exception (group=0x415db2a0)
07-22 16:27:06.385: E/AndroidRuntime(6071): FATAL EXCEPTION: main
07-22 16:27:06.385: E/AndroidRuntime(6071): java.lang.RuntimeException: Unable to start receiver com.urbanairship.push.GCMPushReceiver: java.lang.NullPointerException
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2277)
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.app.ActivityThread.access$1500(ActivityThread.java:140)
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.os.Handler.dispatchMessage(Handler.java:99)
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.os.Looper.loop(Looper.java:137)
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.app.ActivityThread.main(ActivityThread.java:4898)
07-22 16:27:06.385: E/AndroidRuntime(6071): at java.lang.reflect.Method.invokeNative(Native Method)
07-22 16:27:06.385: E/AndroidRuntime(6071): at java.lang.reflect.Method.invoke(Method.java:511)
07-22 16:27:06.385: E/AndroidRuntime(6071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
07-22 16:27:06.385: E/AndroidRuntime(6071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
07-22 16:27:06.385: E/AndroidRuntime(6071): at dalvik.system.NativeStart.main(Native Method)
07-22 16:27:06.385: E/AndroidRuntime(6071): Caused by: java.lang.NullPointerException
07-22 16:27:06.385: E/AndroidRuntime(6071): at com.urbanairship.UAirship.getPackageName(Unknown Source)
07-22 16:27:06.385: E/AndroidRuntime(6071): at com.urbanairship.push.GCMPushReceiver.onReceive(Unknown Source)
07-22 16:27:06.385: E/AndroidRuntime(6071): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2270)
07-22 16:27:06.385: E/AndroidRuntime(6071): ... 10 more即使我得到了这个例外,我能够启动应用程序。运行时:
url -X POST -u "<app id>:<mastersecret>" -H "Content-Type: application/json" --data '{"android": {"alert": "TestPushtoAPID"}, "apids": ["****4"]}' https://go.urbanairship.com/api/push/我得到了以下响应:
{
"push_id": "33e95250-f2b9-11e2-a8d0-14feb5d31f47"
}尽管如此,我的设备上还是看不到任何通知。
Part of Android Manifest
<!-- REQUIRED for Urban Airship GCM-->
<receiver android:name="com.urbanairship.CoreReceiver" />
<receiver android:name="com.urbanairship.push.GCMPushReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
</receiver>MainActivity的一部分:
UAirship.takeOff(this.getApplication(), options);
PushManager.enablePush();
PushManager.shared().setIntentReceiver(IntentReceiver.class);
String apid = PushManager.shared().getAPID();发布于 2013-08-01 20:14:34
这个问题似乎是因为特定的apid连接到了我用来调试的另一个UA应用程序。我创建了一个新的应用程序,并假设相同的apid也可以附加到这个应用程序。事实并非如此。我试着使用一个新设备,它工作得很好。
发布于 2014-07-23 17:05:35
实际上,问题出在库的正确实现上。
takeOff以及其他配置代码应该在Application类的OnCreate中,该类用于maintaining of the application.This,我们大多数人都会把它放在前台Activity的OnCreate中。
接下来,您需要在应用程序标记内的AndroidManifest.xml中使用Application类的完全限定名:
<application
android:name="com.popa.app.MyApplication"
..此是如何按照中提到的方式实现的。
发布于 2014-03-13 14:20:41
我和你有相同的NPE,但有不同的原因/解决方案。在我的例子中,我的AndroidManifest.xml中有适当的UA服务/接收器,但是忘了调用UAirship.takeOff()。在我包含了以下代码之后,NPE就消失了:
UAirship.takeOff(application, AirshipConfigOptions.loadDefaultOptions(application));
PushManager.enablePush();https://stackoverflow.com/questions/17785971
复制相似问题