首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UrbanAirship NPE

UrbanAirship NPE
EN

Stack Overflow用户
提问于 2013-07-22 19:04:49
回答 5查看 2.2K关注 0票数 2

在安装我的应用程序本身时,我得到了以下NPE。请帮帮忙。

代码语言:javascript
复制
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

即使我得到了这个例外,我能够启动应用程序。运行时:

代码语言:javascript
复制
url -X POST -u "<app id>:<mastersecret>" -H "Content-Type: application/json" --data '{"android": {"alert": "TestPushtoAPID"}, "apids": ["****4"]}' https://go.urbanairship.com/api/push/

我得到了以下响应:

代码语言:javascript
复制
{
    "push_id": "33e95250-f2b9-11e2-a8d0-14feb5d31f47"
}

尽管如此,我的设备上还是看不到任何通知。

代码语言:javascript
复制
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的一部分:

代码语言:javascript
复制
UAirship.takeOff(this.getApplication(), options); 
PushManager.enablePush(); 
PushManager.shared().setIntentReceiver(IntentReceiver.class); 
String apid = PushManager.shared().getAPID();
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-01 20:14:34

这个问题似乎是因为特定的apid连接到了我用来调试的另一个UA应用程序。我创建了一个新的应用程序,并假设相同的apid也可以附加到这个应用程序。事实并非如此。我试着使用一个新设备,它工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2014-07-23 17:05:35

实际上,问题出在库的正确实现上。

takeOff以及其他配置代码应该在Application类的OnCreate中,该类用于maintaining of the application.This,我们大多数人都会把它放在前台ActivityOnCreate中。

接下来,您需要在应用程序标记内的AndroidManifest.xml中使用Application类的完全限定名:

代码语言:javascript
复制
 <application
        android:name="com.popa.app.MyApplication"
        ..

是如何按照中提到的方式实现的。

票数 3
EN

Stack Overflow用户

发布于 2014-03-13 14:20:41

我和你有相同的NPE,但有不同的原因/解决方案。在我的例子中,我的AndroidManifest.xml中有适当的UA服务/接收器,但是忘了调用UAirship.takeOff()。在我包含了以下代码之后,NPE就消失了:

代码语言:javascript
复制
    UAirship.takeOff(application, AirshipConfigOptions.loadDefaultOptions(application));
    PushManager.enablePush();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17785971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档