Coder Social home page Coder Social logo

android-samples's Introduction

Urban Airship Sample

Sample application that show case the Urban Airship SDK.

Setup

  1. Update the Android SDK Manager
  • Verify Android Support Repository and Google Repository (under Extras) are installed and up-to-date
  1. Import the project into Android Studio
  • Open Android Studio to welcome screen
  • Import project, select the root directory
  1. Create an airshipconfig.properties file in the assets directory with your application's config:
developmentAppKey = Your Development App Key
developmentAppSecret = Your Development App Secret
productionAppKey = Your Production App Key
productionAppSecret = Your Production App Secret

gcmSender = Your GCM sender ID is your Google API project number (required for GCM)
inProduction = false

# LogLevel is "VERBOSE", "DEBUG", "INFO", "WARN", "ERROR" or "ASSERT"
developmentLogLevel = DEBUG
productionLogLevel = ERROR

Links

android-samples's People

Contributors

caseycrites avatar crow avatar hcrowell avatar marc-scig avatar rlepinski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-samples's Issues

Support for android.support.v7.preference.PreferenceFragmentCompat

Is there a plan to add support for android.support.v7.preference.PreferenceFragmentCompat?, currently it crashes when adding com.urbanairship.preference into android.support.v7.preference.PreferenceFragmentCompat:

error message:

android.view.InflateException: Binary XML file line #16: Error inflating class com.urbanairship.preference.VibrateEnablePreference
at android.support.v7.preference.PreferenceInflater.createItem(PreferenceInflater.java:258)
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:287)
at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:354)
at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:356)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:162)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:112)
at android.support.v7.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:137)
at android.support.v7.preference.PreferenceFragmentCompat.addPreferencesFromResource(PreferenceFragmentCompat.java:432)

UAirship.shared().getPushManager().getChannelId() always return null

In push sample app I am getting channelId null always.

private void updateChannelIdField() {
        String channelIdString = UAirship.shared().getPushManager().getChannelId();
        Log.e("","My Application Channel ID: " + channelIdString);
        channelIdString = UAStringUtil.isEmpty(channelIdString) ? "" : channelIdString;

        // fill in channel ID text
        if (!channelIdString.equals(channelID.getText())) {
            channelID.setText(channelIdString);
        }
    }

output

E/๏น• My Application Channel ID: null

UA overriding my GCM implementation

I have both UrbanAirship and my own GCM integration set up. Of late a lot of my app users have been sending me NotRegistered tokens, these users have not uninstalled the app.

On further investigation, I figured that UA was using its own GCM implementation and at times the InstanceId token obtained by my implementation and that of UA don't match. In such a scenario my token is the invalid one whereas UA has the valid one . This I think is most likely because that UA Instance Id request happens post mine. This has started I believe since you guys updated to using the Instance Id architecture (6.2+).

This is creating a lot of non addressable user base and impacting my end user experience.

I need to be able unify these two GCM registration processes for which I need a callback from UA when it obtains the instance id token.

Could you guys fix this immediately.

PS: In case you are wondering of my use case, we work with a few other external integrations(Chat etc) which need gcm tokens. Additionally as a part of our practice we prefer maintaining a copy of push tokens on our server.

Sample code (5.0.1 aar) doesn't receive push notifications

I had a demo app using lib.4.0.4.jar, and was able to send push notifications.
After upgrading to lib.5.0.1.aar, I don't receive anything. I also tried to run the samples, but got the same result. I've noticed this, not sure if that's the problem:

E/BroadcastReceiver( 2161): java.lang.RuntimeException: BroadcastReceiver trying to return result during a non-ordered broadcast
E/BroadcastReceiver( 2161):     at android.content.BroadcastReceiver$PendingResult.checkSynchronousHint(BroadcastReceiver.java:445)
E/BroadcastReceiver( 2161):     at android.content.BroadcastReceiver$PendingResult.setResultCode(BroadcastReceiver.java:267)
E/BroadcastReceiver( 2161):     at com.urbanairship.push.GCMPushReceiver.onReceive(GCMPushReceiver.java:55)
E/BroadcastReceiver( 2161):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2491)
E/BroadcastReceiver( 2161):     at android.app.ActivityThread.access$1700(ActivityThread.java:143)
E/BroadcastReceiver( 2161):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1333)
E/BroadcastReceiver( 2161):     at android.os.Handler.dispatchMessage(Handler.java:102)
E/BroadcastReceiver( 2161):     at android.os.Looper.loop(Looper.java:135)
E/BroadcastReceiver( 2161):     at android.app.ActivityThread.main(ActivityThread.java:5070)
E/BroadcastReceiver( 2161):     at java.lang.reflect.Method.invoke(Native Method)
E/BroadcastReceiver( 2161):     at java.lang.reflect.Method.invoke(Method.java:372)
E/BroadcastReceiver( 2161):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
E/BroadcastReceiver( 2161):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)

java.security.NoSuchAlgorithmException: MessageDigest MD5 implementation not found

Hey guys,

I'm seeing this exception in my when running the samples on a 4.1.2 device:

0   
java.lang.AssertionError: java.security.NoSuchAlgorithmException: MessageDigest MD5 implementation not found
1   
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.X509_NAME_hash(NativeCrypto.java:188)
2   
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.X509_NAME_hash_old(NativeCrypto.java:181)
3   
at org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore.hash(TrustedCertificateStore.java:417)
4   
at org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore.findCert(TrustedCertificateStore.java:377)
5   
at org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore.isTrustAnchor(TrustedCertificateStore.java:326)
6   
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.findTrustAnchorBySubjectAndPublicKey(TrustManagerImpl.java:307)
7   
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.cleanupCertChainAndFindTrustAnchors(TrustManagerImpl.java:237)
8   
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:184)
9   
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:163)
10  
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:573)
11  
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
12  
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371)
13  
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getSession(OpenSSLSocketImpl.java:703)
14  
at crittercism.android.aa.getSession(Unknown Source)
15  
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
16  
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
17  
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
18  
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
19  
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
20  
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
21  
at org.apache.http.impl.client.AbstractHttpClient$1.executeRequestSending(AbstractHttpClient.java:608)
22  
at org.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSendingUsual(NafRequestExecutorWrapperRedirectionHandler.java:96)
23  
at org.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSending(NafRequestExecutorWrapperRedirectionHandler.java:73)
24  
at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.sendFirstRequest(NafHttpAuthStrategyDefault.java:488)
25  
at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecutionUnsafe(NafHttpAuthStrategyDefault.java:389)
26  
at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecution(NafHttpAuthStrategyDefault.java:200)
27  
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
28  
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
29  
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
30  
at com.urbanairship.restclient.Request.execute(Request.java:165)
31  
at com.urbanairship.push.PushService.updateApid(PushService.java:210)
32  
at com.urbanairship.push.PushService.onHandleIntent(PushService.java:128)
33  
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
34  
at android.os.Handler.dispatchMessage(Handler.java:99)
35  
at android.os.Looper.loop(Looper.java:137)
36  
at android.os.HandlerThread.run(HandlerThread.java:60)
37  
Caused by: java.security.NoSuchAlgorithmException: MessageDigest MD5 implementation not found
38  
at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:177)
39  
at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:151)
40  
at java.security.MessageDigest.getInstance(MessageDigest.java:91)
41  
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.X509_NAME_hash(NativeCrypto.java:185)
42  
... 35 more
43  
java.security.NoSuchAlgorithmException: MessageDigest MD5 implementation not found
44  
at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:177)
45  
at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:151)
46  
at java.security.MessageDigest.getInstance(MessageDigest.java:91)
47  
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.X509_NAME_hash(NativeCrypto.java:185)
48  
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.X509_NAME_hash_old(NativeCrypto.java:181)
49  
at org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore.hash(TrustedCertificateStore.java:417)
50  
at org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore.findCert(TrustedCertificateStore.java:377)
51  
at org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore.isTrustAnchor(TrustedCertificateStore.java:326)
52  
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.findTrustAnchorBySubjectAndPublicKey(TrustManagerImpl.java:307)
53  
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.cleanupCertChainAndFindTrustAnchors(TrustManagerImpl.java:237)
54  
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:184)
55  
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:163)
56  
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:573)
57  
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
58  
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371)
59  
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getSession(OpenSSLSocketImpl.java:703)
60  
at crittercism.android.aa.getSession(Unknown Source)
61  
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
62  
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
63  
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
64  
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
65  
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
66  
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
67  
at org.apache.http.impl.client.AbstractHttpClient$1.executeRequestSending(AbstractHttpClient.java:608)
68  
at org.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSendingUsual(NafRequestExecutorWrapperRedirectionHandler.java:96)
69  
at org.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSending(NafRequestExecutorWrapperRedirectionHandler.java:73)
70  
at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.sendFirstRequest(NafHttpAuthStrategyDefault.java:488)
71  
at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecutionUnsafe(NafHttpAuthStrategyDefault.java:389)
72  
at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecution(NafHttpAuthStrategyDefault.java:200)
73  
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
74  
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
75  
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
76  
at com.urbanairship.restclient.Request.execute(Request.java:165)
77  
at com.urbanairship.push.PushService.updateApid(PushService.java:210)
78  
at com.urbanairship.push.PushService.onHandleIntent(PushService.java:128)
79  
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
80  
at android.os.Handler.dispatchMessage(Handler.java:99)
81  
at android.os.Looper.loop(Looper.java:137)
82  
at android.os.HandlerThread.run(HandlerThread.java:60)

Any idea on how to solve this?

Thanks,

NPE crash in UrbanAirshipProvider.clinit

java.lang.ExceptionInInitializerError
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.ActivityThread.installProvider(ActivityThread.java:4648)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4290)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232)
at android.app.ActivityThread.access$1400(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
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:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.urbanairship.UrbanAirshipProvider.(Unknown Source)
... 15 more

Android: Application launches two time when click on push notification

Hi,

We are using Urban Airship SDK for android, and using deep linking feature for the app.
We have integrated SDK and able to send and receive
push notifications via deep linking but when we click on push message our required activity is called according
to our logic but when we click on back button
our application launch again automatically.

NOTE: We have not used IntentReceiver class rather than using ParseDepLink activity for handling deep link push message.

Here is the code :

Code for manifest

 <activity android:name="com.nexgtv.kidstv.ParseDeepLinkActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>

                <!-- Handles any vnd.urbanairship.sample://deeplink URI's -->
                <data android:scheme="com.nexgtv.kidstv" android:host="deeplink" />

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

and code for ParseDeepLinkActivity:

public class ParseDeepLinkActivity extends Activity {
    public static final String PREFERENCE_DEEP_LINK = "/home/preferences";
    public static final String INBOX_DEEP_LINK = "/inbox/messages";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        if (intent == null || intent.getData() == null) {
            finish();
        }

        openDeepLink(intent.getData());

        // Finish this activity
        finish();
    }

    private void openDeepLink(Uri deepLink) {
        String path = deepLink.getPath();
        Log.i("path", path);

        if(path!=null && path.equalsIgnoreCase("/live")) {
//            List<String> list = deepLink.getPathSegments();
//            String message = getDeepLinkQueryParameter("channel_code");
//            String action = getDeepLinkQueryParameter("broadcast_type");
            String channel_code = getDeepLinkQueryParameter("channel_code");
            String broadcast_type = getDeepLinkQueryParameter("broadcast_type");
            String content_type = getDeepLinkQueryParameter("content_type");

            Bundle bundle = new Bundle();
            bundle.putString("message", "live");
            bundle.putString("action", "2");
            bundle.putString("value", channel_code);
            bundle.putString("ctype", broadcast_type);
            bundle.putString("play_st", content_type);

            Intent intent = new Intent(this, MainScreen.class);
//            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            intent.putExtras(bundle);
            startActivity(intent);
        }else if(path!=null && path.equalsIgnoreCase("/vod")){
            String channel_code = getDeepLinkQueryParameter("channel_code");
            String broadcast_type = getDeepLinkQueryParameter("broadcast_type");
            String content_type = getDeepLinkQueryParameter("content_type");

            Bundle bundle = new Bundle();
            bundle.putString("message", "vod");
            bundle.putString("action", "2");
            bundle.putString("value", channel_code);
            bundle.putString("ctype", broadcast_type);
            bundle.putString("play_st", content_type);

            Intent intent = new Intent(this, MainScreen.class);
//            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
            intent.putExtras(bundle);
            startActivity(intent);
        }

    }

    private String getDeepLinkQueryParameter(String key) {
        Intent intent = getIntent();
        if (intent != null && intent.getData() != null) {
            return intent.getData().getQueryParameter(key);
        }

        return null;
    }
}

Disk reads in main thread makes host application slow.

Check these insane delays:
Any UA operation in main thread must not take more than 16 ms. At most, of course.

StrictMode policy violation; ~duration=227 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1123)
at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1041)
at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:842)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:836)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:144)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
at android.content.ContentResolver.query(ContentResolver.java:433)
at android.content.ContentResolver.query(ContentResolver.java:357)
at com.urbanairship.UrbanAirshipResolver.query(Unknown Source)
at com.urbanairship.PreferencesResolver.get(Unknown Source)
at com.urbanairship.Preferences.getPreferenceFromDatabase(Unknown Source)
at com.urbanairship.Preferences.getPreference(Unknown Source)
at com.urbanairship.Preferences.getBoolean(Unknown Source)
at com.urbanairship.push.PushPreferences.isSoundEnabled(Unknown Source)

Autopilot and java.lang.RuntimeException: Unable to start receiver com.urbanairship.push.GCMPushReceiver: java.lang.NullPointerException

Hi guys,

I'm trying to create Adobe Air native extension for Angroid using your library urbanairship-lib-4.0.4.jar.

All is working fine untill I move options assigment (AppKey, AppSecret, etc.) from main application class into autopilot class. According to http://docs.urbanairship.com/reference/libraries/android/latest/reference/com/urbanairship/Autopilot.html autopilot postpones takeOff and this is exactly what I need to call takeOff after native extension was initialized and set all needed options for UrbanAirship. All is working OK but I have to wait longer for first PN (I guess that's the consiquence of using autopilot). Problem starts when app is wiped from recent apps screen (not running in background) and then PN comes:

08-21 19:20:16.019: I/GCM(15483): GCM message air.xx.xxxx.testPushNotifications 0:1408620017436060%0#b0e5f2beea92a435 08-21 19:20:16.039: I/ActivityManager(594): Start proc air.xx.xxxx.testPushNotifications for broadcast air.xx.xxxx.testPushNotifications/com.urbanairship.push.GCMPushReceiver: pid=5483 uid=10138 gids={50138, 3003} 08-21 19:20:16.089: I/MyAutoPilot(5483): Settings initialization 08-21 19:20:16.209: D/AndroidRuntime(5483): Shutting down VM 08-21 19:20:16.209: W/dalvikvm(5483): threadid=1: thread exiting with uncaught exception (group=0x41588ba8) 08-21 19:20:16.209: W/GCM-DMM(15483): broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=air.xx.xxxx.testPushNotifications (has extras) } 08-21 19:20:16.209: E/AndroidRuntime(5483): FATAL EXCEPTION: main 08-21 19:20:16.209: E/AndroidRuntime(5483): Process: air.xx.xxxx.testPushNotifications, PID: 5483 08-21 19:20:16.209: E/AndroidRuntime(5483): java.lang.RuntimeException: Unable to start receiver com.urbanairship.push.GCMPushReceiver: java.lang.NullPointerException 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2426) 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.app.ActivityThread.access$1700(ActivityThread.java:135) 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272) 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.os.Handler.dispatchMessage(Handler.java:102) 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.os.Looper.loop(Looper.java:136) 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.app.ActivityThread.main(ActivityThread.java:5017) 08-21 19:20:16.209: E/AndroidRuntime(5483): at java.lang.reflect.Method.invokeNative(Native Method) 08-21 19:20:16.209: E/AndroidRuntime(5483): at java.lang.reflect.Method.invoke(Method.java:515) 08-21 19:20:16.209: E/AndroidRuntime(5483): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 08-21 19:20:16.209: E/AndroidRuntime(5483): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 08-21 19:20:16.209: E/AndroidRuntime(5483): at dalvik.system.NativeStart.main(Native Method) 08-21 19:20:16.209: E/AndroidRuntime(5483): Caused by: java.lang.NullPointerException 08-21 19:20:16.209: E/AndroidRuntime(5483): at xx.xxxx.PushNotificationsUrbanAirship.MyAutoPilot.execute(MyAutoPilot.java:47) 08-21 19:20:16.209: E/AndroidRuntime(5483): at com.urbanairship.Autopilot.automaticTakeOff(Autopilot.java:110) 08-21 19:20:16.209: E/AndroidRuntime(5483): at com.urbanairship.push.GCMPushReceiver.onReceive(GCMPushReceiver.java:53) 08-21 19:20:16.209: E/AndroidRuntime(5483): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2419) 08-21 19:20:16.209: E/AndroidRuntime(5483): ... 10 more

and then....

08-21 19:20:24.608: I/ActivityManager(594): Process air.xx.xxxx.testPushNotifications (pid 5483) has died. 08-21 19:21:06.092: I/ActivityManager(594): Start proc air.xx.xxxx.testPushNotifications for service air.xx.xxxx.testPushNotifications/com.urbanairship.analytics.EventService: pid=5536 uid=10138 gids={50138, 3003} 08-21 19:21:06.172: I/MyAutoPilot(5536): Settings initialization 08-21 19:21:06.282: D/AndroidRuntime(5536): Shutting down VM 08-21 19:21:06.282: W/dalvikvm(5536): threadid=1: thread exiting with uncaught exception (group=0x41588ba8) 08-21 19:21:06.282: E/AndroidRuntime(5536): FATAL EXCEPTION: main 08-21 19:21:06.282: E/AndroidRuntime(5536): Process: air.xx.xxxx.testPushNotifications, PID: 5536 08-21 19:21:06.282: E/AndroidRuntime(5536): java.lang.RuntimeException: Unable to create service com.urbanairship.analytics.EventService: java.lang.NullPointerException 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2582) 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.app.ActivityThread.access$1800(ActivityThread.java:135) 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.os.Handler.dispatchMessage(Handler.java:102) 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.os.Looper.loop(Looper.java:136) 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.app.ActivityThread.main(ActivityThread.java:5017) 08-21 19:21:06.282: E/AndroidRuntime(5536): at java.lang.reflect.Method.invokeNative(Native Method) 08-21 19:21:06.282: E/AndroidRuntime(5536): at java.lang.reflect.Method.invoke(Method.java:515) 08-21 19:21:06.282: E/AndroidRuntime(5536): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 08-21 19:21:06.282: E/AndroidRuntime(5536): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 08-21 19:21:06.282: E/AndroidRuntime(5536): at dalvik.system.NativeStart.main(Native Method) 08-21 19:21:06.282: E/AndroidRuntime(5536): Caused by: java.lang.NullPointerException 08-21 19:21:06.282: E/AndroidRuntime(5536): at tv.mhub.PushNotificationsUrbanAirship.MyAutoPilot.execute(MyAutoPilot.java:47) 08-21 19:21:06.282: E/AndroidRuntime(5536): at com.urbanairship.Autopilot.automaticTakeOff(Autopilot.java:110) 08-21 19:21:06.282: E/AndroidRuntime(5536): at com.urbanairship.analytics.EventService.onCreate(EventService.java:94) 08-21 19:21:06.282: E/AndroidRuntime(5536): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2572) 08-21 19:21:06.282: E/AndroidRuntime(5536): ... 10 more

ApplicationManifest includes:

                    <!-- Needed for Action.startActivityForResult -->
                    <activity android:name="com.urbanairship.actions.ActionActivity"/>



                    <!-- MODIFICATION REQUIRED
                        - Set or Remove the parent activity
                        - For more customization details, see com.urbanairship.actions.LandingPageActivity -->
                    <activity
                        android:name="com.urbanairship.actions.LandingPageActivity"
                        android:parentActivityName="xx.xxxx.PushNotificationsUrbanAirship.MainActivity"
                        android:exported="false">

                        <meta-data
                            android:name="android.support.PARENT_ACTIVITY"
                            android:value="xx.xxxx.PushNotificationsUrbanAirship.MainActivity" />

                        <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>



                    <!-- 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" />

                            <!-- MODIFICATION REQUIRED - Use your package name as the category -->
                            <category android:name="air.xx.xxxx.testPushNotifications" />
                        </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>



                    <service android:name="com.urbanairship.push.PushService" android:label="Push Notification Service"/>
                    <service android:name="com.urbanairship.analytics.EventService" android:label="Event Service"/>
                    <service android:name="com.urbanairship.actions.ActionService" />



                    <!-- This is required for persisting preferences related to push and location -->
                    <!-- MODIFICATION REQUIRED - Replace "com.urbanairship.push.sample" with your package name -->
                    <provider android:name="com.urbanairship.UrbanAirshipProvider"
                              android:authorities="air.xx.xxxx.testPushNotifications.urbanairship.provider"
                              android:permission="air.xx.xxxx.testPushNotifications.permission.UA_DATA"
                              android:exported="true"
                              android:multiprocess="true" />
                    <!-- END OF REQUIRED ITEMS -->


                    <!-- OPTIONAL (for segments support) -->
                    <service android:name="com.urbanairship.location.LocationService" android:label="Segments Service"/>

                    <!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
                    <!-- Replace the receiver below with your package and class name -->
                    <receiver android:name="xx.xxxx.PushNotificationsUrbanAirship.IntentReceiver" />











            </application>

Application class:

package xx.xxxx.PushNotificationsUrbanAirship;

import android.app.Application;

public class MyApplication extends Application {

@Override
public void onCreate() {

    super.onCreate();

}

}

MainActivity:

package xx.xxxx.PushNotificationsUrbanAirship;

import android.os.Bundle;

import com.urbanairship.analytics.InstrumentedActivity;

public class MainActivity extends InstrumentedActivity {

@Override
public void onCreate(Bundle savedInstanceState) {

}

}

Autopilot:

package xx.xxxx.PushNotificationsUrbanAirship;

import android.app.Application;
import android.util.Log;

import com.urbanairship.AirshipConfigOptions;
import com.urbanairship.Autopilot;
import com.urbanairship.UAirship;
import com.urbanairship.push.PushManager;

public class MyAutoPilot extends Autopilot {

private static final String TAG = "MyAutoPilot";

private String _appKey;
private String _appSecret;
private String _gcmSender;
private Boolean _inProduction;

public void setAppKey(String appKey){
    Log.i(TAG, "Setting appKey");
    _appKey = appKey;
}

public void setAppSecret(String appSecret){
    Log.i(TAG, "Setting appSecret");
    _appSecret = appSecret;
}

public void setGcmSender(String gcmSender){
    Log.i(TAG, "Setting gcmSender");
    _gcmSender = gcmSender;
}

public void setInProduction(Boolean inProduction){
    Log.i(TAG, "Setting inProduction");
    _inProduction = inProduction;
}

@Override
public void execute(Application application) {

    Log.i(TAG, "Settings initialization");

    AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(application);

    if(_inProduction) {
        options.productionAppKey = _appKey;
        options.productionAppSecret = _appSecret;
    }
    else {
        options.developmentAppKey = _appKey;
        options.developmentAppSecret = _appSecret;
    }

    options.inProduction = _inProduction;
    options.transport = "gcm";
    options.gcmSender = _gcmSender;

    UAirship.takeOff(application, options);

    PushManager.enablePush();

    PushManager.shared().setIntentReceiver(IntentReceiver.class);
}

}

FREFunction:

package xx.xxxx.PushNotificationsUrbanAirship.functions;

import xx.xxxx.PushNotificationsUrbanAirship.MyAutoPilot;
import android.util.Log;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREInvalidObjectException;
import com.adobe.fre.FREObject;
import com.adobe.fre.FRETypeMismatchException;
import com.adobe.fre.FREWrongThreadException;

public class RegisterWithUAFunction implements FREFunction {

private static final String TAG = "RegisterWithUAFunction";

@Override
public FREObject call(FREContext context, FREObject[] args) {
    // TODO Auto-generated method stub

    try{
        MyAutoPilot autoPilot = new MyAutoPilot();
        autoPilot.setAppKey(args[0].getAsString());
        autoPilot.setAppSecret(args[1].getAsString());
        autoPilot.setGcmSender(args[2].getAsString());
        autoPilot.setInProduction(args[3].getAsBool());

        Log.i(TAG, "About to execute takeOff");

        autoPilot.execute(context.getActivity().getApplication());
    }
    catch(FREInvalidObjectException e){
        Log.e(TAG, e.getMessage());
    }
    catch(FRETypeMismatchException e){
        Log.e(TAG, e.getMessage());
    }
    catch(FREWrongThreadException e){
        Log.e(TAG, e.getMessage());
    }
    catch(Exception e){
        Log.e(TAG, e.getMessage());
    }

    return null;
}

}

IntentReceiver is exactly like in example https://github.com/urbanairship/android-samples/tree/master/PushSample

Any help is very appreciated

Disk writes in main thread

08-14 15:44:04.830: D/StrictMode(15848): StrictMode policy violation; ~duration=100 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=93 violation=1
08-14 15:44:04.830: D/StrictMode(15848): at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1109)
08-14 15:44:04.830: D/StrictMode(15848): at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1043)
08-14 15:44:04.830: D/StrictMode(15848): at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:779)
08-14 15:44:04.830: D/StrictMode(15848): at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
08-14 15:44:04.830: D/StrictMode(15848): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
08-14 15:44:04.830: D/StrictMode(15848): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
08-14 15:44:04.830: D/StrictMode(15848): at android.database.sqlite.SQLiteDatabase.replaceOrThrow(SQLiteDatabase.java:1411)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.util.DataManager.insert(DataManager.java:337)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.UrbanAirshipProvider.insert(UrbanAirshipProvider.java:241)
08-14 15:44:04.830: D/StrictMode(15848): at android.content.ContentProvider$Transport.insert(ContentProvider.java:220)
08-14 15:44:04.830: D/StrictMode(15848): at android.content.ContentResolver.insert(ContentResolver.java:1190)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.UrbanAirshipResolver.insert(UrbanAirshipResolver.java:78)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.PreferencesResolver.put(PreferencesResolver.java:26)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.Preferences$Preference.setValue(Preferences.java:266)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.Preferences.put(Preferences.java:173)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.push.PushPreferences.setAppVersionCode(PushPreferences.java:479)
08-14 15:44:04.830: D/StrictMode(15848): at com.urbanairship.push.GCMPushReceiver.onReceive(GCMPushReceiver.java:68)
08-14 15:44:04.830: D/StrictMode(15848): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2407)
08-14 15:44:04.830: D/StrictMode(15848): at android.app.ActivityThread.access$1700(ActivityThread.java:135)
08-14 15:44:04.830: D/StrictMode(15848): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
08-14 15:44:04.830: D/StrictMode(15848): at android.os.Handler.dispatchMessage(Handler.java:102)
08-14 15:44:04.830: D/StrictMode(15848): at android.os.Looper.loop(Looper.java:136)
08-14 15:44:04.830: D/StrictMode(15848): at android.app.ActivityThread.main(ActivityThread.java:5001)
08-14 15:44:04.830: D/StrictMode(15848): at java.lang.reflect.Method.invoke(Native Method)
08-14 15:44:04.830: D/StrictMode(15848): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
08-14 15:44:04.830: D/StrictMode(15848): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
08-14 15:44:04.830: D/AndroidRuntime(15848): Shutting down VM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.