当从设备清除Activity(或RAM)时,UrbanAirship会发生NullPointerException崩溃

时间:2014-04-16 14:38:08

标签: android push-notification urbanairship.com

我尝试使用UrbanAirship推送通知来实现我的应用程序。

当我启动应用程序并且它处于后台(但处于活动状态)时,我正确地收到了推送通知,但是当我的应用程序被清理时发送推送通知(因为我的设备需要空间或因为我清理了RAM)我崩溃了。

这是LogCat:

  
    

04-16 16:09:34.082:E / AndroidRuntime(19680):FATAL EXCEPTION:main 04-16 16:09:34.082:E / AndroidRuntime(19680):     java.lang.RuntimeException:无法启动接收器     com.urbanairship.push.GCMPushReceiver:java.lang.NullPointerException     04-16 16:09:34.082:E / AndroidRuntime(19680):at     android.app.ActivityThread.handleReceiver(ActivityThread.java:2258)     04-16 16:09:34.082:E / AndroidRuntime(19680):at     android.app.ActivityThread.access $ 1600(ActivityThread.java:134)04-16     16:09:34.082:E / AndroidRuntime(19680):at     android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1293)     04-16 16:09:34.082:E / AndroidRuntime(19680):at     android.os.Handler.dispatchMessage(Handler.java:99)04-16     16:09:34.082:E / AndroidRuntime(19680):at     android.os.Looper.loop(Looper.java:137)04-16 16:09:34.082:     E / AndroidRuntime(19680):at     android.app.ActivityThread.main(ActivityThread.java:4856)04-16     16:09:34.082:E / AndroidRuntime(19680):at     java.lang.reflect.Method.invokeNative(Native Method)04-16     16:09:34.082:E / AndroidRuntime(19680):at     java.lang.reflect.Method.invoke(Method.java:511)04-16 16:09:34.082:     E / AndroidRuntime(19680):at     com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1007)     04-16 16:09:34.082:E / AndroidRuntime(19680):at     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)04-16     16:09:34.082:E / AndroidRuntime(19680):at     dalvik.system.NativeStart.main(Native Method)04-16 16:09:34.082:     E / AndroidRuntime(19680):引起:java.lang.NullPointerException     04-16 16:09:34.082:E / AndroidRuntime(19680):at     com.urbanairship.push.PushService.acquireWakeLock(PushService.java:341)     04-16 16:09:34.082:E / AndroidRuntime(19680):at     com.urbanairship.push.PushService.runGcmIntentInService(PushService.java:160)     04-16 16:09:34.082:E / AndroidRuntime(19680):at     com.urbanairship.push.GCMPushReceiver.onReceive(GCMPushReceiver.java:80)     04-16 16:09:34.082:E / AndroidRuntime(19680):at     android.app.ActivityThread.handleReceiver(ActivityThread.java:2251)     04-16 16:09:34.082:E / AndroidRuntime(19680):... 10 more

  

有时我和这个人一起得到这个:

  
    

04-16 15:19:00.420:E / UA AP(10730):无法自动关闭04-16 15:19:00.420:D / AndroidRuntime(10730):关闭VM 04-16     15:19:00.430:W / dalvikvm(10730):threadid = 1:线程退出     未捕获的异常(组= 0x412462a0)04-16 15:19:00.430:     E / AndroidRuntime(10730):致命异常:主04-16 15:19:00.430:     E / AndroidRuntime(10730):java.lang.RuntimeException:无法创建     service com.urbanairship.analytics.EventService:     java.lang.NullPointerException 04-16 15:19:00.430:     E / AndroidRuntime(10730):at     android.app.ActivityThread.handleCreateService(ActivityThread.java:2395)     04-16 15:19:00.430:E / AndroidRuntime(10730):at     android.app.ActivityThread.access $ 1700(ActivityThread.java:134)04-16     15:19:00.430:E / AndroidRuntime(10730):at     android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1299)     04-16 15:19:00.430:E / AndroidRuntime(10730):at     android.os.Handler.dispatchMessage(Handler.java:99)04-16     15:19:00.430:E / AndroidRuntime(10730):at     android.os.Looper.loop(Looper.java:137)04-16 15:19:00.430:     E / AndroidRuntime(10730):at     android.app.ActivityThread.main(ActivityThread.java:4856)04-16     15:19:00.430:E / AndroidRuntime(10730):at     java.lang.reflect.Method.invokeNative(Native Method)04-16     15:19:00.430:E / AndroidRuntime(10730):at     java.lang.reflect.Method.invoke(Method.java:511)04-16 15:19:00.430:     E / AndroidRuntime(10730):at     com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1007)     04-16 15:19:00.430:E / AndroidRuntime(10730):at     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)04-16     15:19:00.430:E / AndroidRuntime(10730):at     dalvik.system.NativeStart.main(Native Method)04-16 15:19:00.430:     E / AndroidRuntime(10730):引起:java.lang.NullPointerException     04-16 15:19:00.430:E / AndroidRuntime(10730):at     com.urbanairship.analytics.EventService.onCreate(EventService.java:96)     04-16 15:19:00.430:E / AndroidRuntime(10730):at     android.app.ActivityThread.handleCreateService(ActivityThread.java:2385)     04-16 15:19:00.430:E / AndroidRuntime(10730):... 10 more

  

可能是库错误???

这是我的MainActivity:

public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(this.getApplication());
    UAirship.takeOff(this.getApplication(), options);
    PushManager.enablePush();
    PushManager.shared().setIntentReceiver(IntentReceiver.class);
    getWindow();
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

[...]

我的AndroidManifext.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="MY_PACKAGE_NAME_ALREADY_WRITTEN"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="19" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<!-- Required for the Urban Airship library -->
<permission android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN.permission.UA_DATA" 
    android:protectionLevel="signature" />
    <uses-permission android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN.permission.UA_DATA" />  

<!-- Required for Push -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.VIBRATE"/>

<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />

<!-- This app has permission to register with GCM and receive message -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" />
<uses-permission android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN.permission.C2D_MESSAGE" />



<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

        <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyBYtJ0bj7ckKWN8drcwYYvnAy_Sbb8y4Xk"/>

<meta-data android:name="com.facebook.sdk.ApplicationId" 
    android:value="@string/APP_ID"/>


    <!-- Required for the library -->
<provider android:name="com.urbanairship.UrbanAirshipProvider"
          android:authorities="MY_PACKAGE_NAME_ALREADY_WRITTEN.urbanairship.provider"
          android:permission="MY_PACKAGE_NAME_ALREADY_WRITTEN.permission.UA_DATA"
          android:exported="true"
          android:multiprocess="true" />

<!-- Required for Push -->
<service android:name="com.urbanairship.push.PushService"/>
<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" />

        <category android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN" />
    </intent-filter>

    <!--  Required for detecting when the application is upgraded so it can request a new GCM ID -->
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REPLACED" />
        <data android:scheme="package"/>
    </intent-filter>
</receiver>

<receiver android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN.IntentReceiver" />

<!-- Required for analytics -->
<service android:name="com.urbanairship.analytics.EventService"/>

<!-- Required for Rich Push -->
<service android:name="com.urbanairship.richpush.RichPushUpdateService"/>

<!-- Required for Actions -->
<activity android:name="com.urbanairship.actions.ActionActivity"/>
<service android:name="com.urbanairship.actions.ActionService"/>

<!-- Required for Landing Page Action -->
<activity
    android:name="com.urbanairship.actions.LandingPageActivity"
    android:parentActivityName="MY_PACKAGE_NAME_ALREADY_WRITTEN.MainActivity"
    android:exported="false">

    <!-- MODIFICATION REQUIRED set or remove the parent activity -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="MY_PACKAGE_NAME_ALREADY_WRITTEN.splash" />

    <intent-filter>
        <action android:name="com.urbanairship.actions.SHOW_LANDING_PAGE_INTENT_ACTION"/>
        <data android:scheme="http" />
        <data android:scheme="https" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

    <activity
        android:name="MY_PACKAGE_NAME_ALREADY_WRITTEN.splash"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
android:name="com.facebook.LoginActivity"
android:label="@string/title_facebook_login" >
    </activity>

        <activity android:name=".MainActivity"
             android:screenOrientation="portrait"></activity>

        <activity android:name=".HomeActivity"
             android:screenOrientation="portrait"></activity>

</application>

提前谢谢

0 个答案:

没有答案