Android Open Source - RavenChat Dispatch Reg Update Message Intent Service






From Project

Back to project page RavenChat.

License

The source code is released under:

Copyright (c) 2014 Sumit Gouthaman. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Softwar...

If you think the Android project RavenChat listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.sumitgouthaman.raven.services;
//from   ww  w. j av a2 s . c om
import android.app.IntentService;
import android.content.Intent;

import com.sumitgouthaman.raven.R;
import com.sumitgouthaman.raven.models.Contact;
import com.sumitgouthaman.raven.models.MessageTypes;
import com.sumitgouthaman.raven.persistence.Persistence;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 * Service that inform contacts about change in registration id
 */
public class DispatchRegUpdateMessageIntentService extends IntentService {

    public DispatchRegUpdateMessageIntentService() {
        super("DispatchRegUpdateMessageIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        if (intent != null) {
            String mySecretUsername = Persistence.getSecretUsername(this);
            String newRegId = Persistence.getRegistrationID(this);

            /**
             * Construct object informing of this change
             */
            JSONObject messageJSON = new JSONObject();
            String messageText = "";
            try {
                messageJSON.put("secretUsername", mySecretUsername);
                messageJSON.put("registrationID", newRegId);
                messageText = messageJSON.toString();
            } catch (JSONException e) {
                e.printStackTrace();
            }

            Contact[] contacts = Persistence.getContacts(this);
            for (Contact c : contacts) {
                String result = null;
                int retries = 3; //No of times to try sending

                while (result == null && retries > 0) {
                    try {
                        if (retries == 2) {
                            Thread.sleep(3000);
                        } else if (retries == 1) {
                            Thread.sleep(5000);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    try {
                        HttpClient client = new DefaultHttpClient();
                        HttpPost httpPost = new HttpPost("https://android.googleapis.com/gcm/send");
                        httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
                        httpPost.addHeader("Authorization", "key=" + getString(R.string.api_key));
                        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                        JSONObject data = new JSONObject();
                        data.put("messageType", MessageTypes.REGISTRATION_UPDATE);
                        data.put("messageText", messageText);
                        nameValuePairs.add(new BasicNameValuePair("data", data.toString()));
                        nameValuePairs.add(new BasicNameValuePair("registration_id", c.registrationID));
                        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
                        HttpResponse response = client.execute(httpPost);
                        HttpEntity entity = response.getEntity();
                        result = EntityUtils.toString(entity, "UTF-8");
                    } catch (Exception ie) {
                        ie.printStackTrace();
                        result = null;
                    }
                    retries--;
                }

                if (result == null) {
                    /**
                     * Sending to this contact failed.
                     * Mark this contact for informing later.
                     */
                    //To be handled
                }
            }
        }
    }
}




Java Source Code List

com.sumitgouthaman.raven.AddContactActivity.java
com.sumitgouthaman.raven.ChatThreadActivity.java
com.sumitgouthaman.raven.DebugActivity.java
com.sumitgouthaman.raven.DispatchGCMMessage.java
com.sumitgouthaman.raven.GCMBroadcastReceiver.java
com.sumitgouthaman.raven.MessageListActivity.java
com.sumitgouthaman.raven.NFCPairing.java
com.sumitgouthaman.raven.SelfDestructingMessageCompose.java
com.sumitgouthaman.raven.SelfDestructingMessageDisplay.java
com.sumitgouthaman.raven.SettingsActivity.java
com.sumitgouthaman.raven.ShareViaRaven.java
com.sumitgouthaman.raven.IntentHelpers.IntentCreator.java
com.sumitgouthaman.raven.listadapters.ChatThreadAdapter.java
com.sumitgouthaman.raven.listadapters.MessageListAdapter.java
com.sumitgouthaman.raven.models.Contact.java
com.sumitgouthaman.raven.models.MessageListItem.java
com.sumitgouthaman.raven.models.MessageTypes.java
com.sumitgouthaman.raven.models.Message.java
com.sumitgouthaman.raven.persistence.Persistence.java
com.sumitgouthaman.raven.services.DispatchMessageIntentService.java
com.sumitgouthaman.raven.services.DispatchNameUpdateMessageIntentService.java
com.sumitgouthaman.raven.services.DispatchRegUpdateMessageIntentService.java
com.sumitgouthaman.raven.services.DispatchRejectionMessageIntentService.java
com.sumitgouthaman.raven.services.TTSService.java
com.sumitgouthaman.raven.utils.CheckPlayServices.java
com.sumitgouthaman.raven.utils.MessageDispatcher.java
com.sumitgouthaman.raven.utils.RandomStrings.java
com.sumitgouthaman.raven.utils.SimpleNotificationMaker.java
com.sumitgouthaman.raven.utils.SimpleSoundNotificationMaker.java
com.sumitgouthaman.raven.utils.StringToQRBitmap.java
com.sumitgouthaman.raven.utils.TimestampFormatter.java
com.sumitgouthaman.raven.utils.crypto.Base64Utils.java
com.sumitgouthaman.raven.utils.crypto.EncryptionUtils.java
com.sumitgouthaman.raven.utils.crypto.KeyGeneratorUtils.java