Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7401035
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T04:21:36+00:00 2026-05-29T04:21:36+00:00

The sender ID is used in the registration process for c2dm.but there has no

  • 0

The sender ID is used in the registration process for c2dm.but there has no receive messages or any register id.

//Akashc2dmActivity.java file

public class Akashc2dmActivity extends Activity implements OnClickListener {
    Button Register,id;
    private static PowerManager.WakeLock mWakeLock;
    private static final String WAKELOCK_KEY = "C2DM_LIB";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if (mWakeLock == null) {
            PowerManager pm = (PowerManager) Akashc2dmActivity.this
                    .getSystemService(Context.POWER_SERVICE);
            mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                    WAKELOCK_KEY);
        }
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Register = (Button) findViewById(R.id.button);
        Register.setOnClickListener(this);
    }

public void sendRequest(View ignored) {
    Log.d("Register", "hello");
    Intent registrationIntent = new Intent(Constants.SEND_REGISTRATION_TO_GOOGLE);
    iHaveNoClueWhatThisSettingDoesButItIsRequiredForTheIntentToWorkSoIBetterSetIt(registrationIntent);
    registrationIntent.putExtra("sender", Constants.C2DM_APPLICATION_SERVER_ID);
    startService(registrationIntent);
}

private void iHaveNoClueWhatThisSettingDoesButItIsRequiredForTheIntentToWorkSoIBetterSetIt(Intent registrationIntent) {
    registrationIntent.putExtra("app", PendingIntent.getBroadcast(Akashc2dmActivity.this, 0, new Intent(), 0));
    Log.d("app", ""+PendingIntent.getBroadcast(Akashc2dmActivity.this, 0, new Intent(), 0));
}

@Override
public void onClick(View v) {
    if(v == Register){
        sendRequest(Register);
    }

}

}

// Constants.java files

public class Constants {
    public static final String TAG = "c2dm";

    public static final String REGISTRATION_INTENT = "com.google.android.c2dm.intent.REGISTER";
    public static final String SEND_REGISTRATION_TO_GOOGLE = "com.google.android.c2dm.intent.REGISTER";
    public static final String RECEIVED_REGISTRATION_ID_FROM_GOOGLE = "com.google.android.c2dm.intent.REGISTRATION";
    public static final String RECEIVED_C2DM_MESSAGE_FROM_GOOGLE = "com.google.android.c2dm.intent.RECEIVE";
    public static final String START_C2DM_SERVICE = "com.google.android.c2dm.intent.START_SERVICE";

    public static final String C2DM_APPLICATION_SERVER_ID = "akash.singh55@gmail.com";
   private Constants() {
    }
}

//C2DMBroadcastReceiver.java file

public class C2DMBroadcastReceiver extends BroadcastReceiver {

    @Override
    public final void onReceive(Context context, Intent intent) {
        if (Constants.RECEIVED_REGISTRATION_ID_FROM_GOOGLE.equals(intent.getAction())) {
             Log.d(Constants.TAG, "Received a registration ID from Google.");
            intent.setAction(Constants.REGISTRATION_INTENT);
            intent.setClassName(context, RegistrationIDReceiver.class.getName());
        } else if (Constants.RECEIVED_C2DM_MESSAGE_FROM_GOOGLE.equals(intent.getAction())) {
            Log.d(Constants.TAG, "Received a C2DM message from Google.");
            intent.setAction(Constants.START_C2DM_SERVICE);
            intent.setClass(context, C2DMService.class);
        }
        context.startService(intent);
    }
}

//C2DMService.java file

public class C2DMService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        Log.e(com.technosoft.Akashc2dm.Constants.TAG, "I was awakend by C2DM!");
        return new Binder();
    }
}

//RegistrationException.java files

public class RegistrationException extends Exception {
    private final String usedUrl;
    private final int responseCode;

    public RegistrationException(String message, String usedUrl, int responseCode) {
        super(message);
        this.usedUrl = usedUrl;
        this.responseCode = responseCode;
    }

    public RegistrationException(String message, Throwable cause) {
        super(message, cause);
        usedUrl = "";
        responseCode = 0;
    }

    public RegistrationException(String message, String usedUrl, IOException e) {
        super(message, e);
        this.usedUrl = usedUrl;
        responseCode = 0;
    }

    @Override
    public String getMessage() {
        return String.format("%s; URL: %s; Response code: %d",
                super.getMessage(), usedUrl, responseCode);
    }
}

//RegistrationIDReceiver.java files

public class RegistrationIDReceiver extends IntentService {
    NotificationManager nm;
    public static final String EXTRA_UNREGISTERED = "unregistered";

    private final RegistrationIDRegistrar registrar =
            RegistrationIDRegistrar.getInstance();
    private static final String EXTRA_ERROR = "error";
    private static final String EXTRA_REGISTRATION_ID = "registration_id";

    public RegistrationIDReceiver() {
        super(Constants.C2DM_APPLICATION_SERVER_ID);
    }

    @Override
    public final void onHandleIntent(Intent intent) {

        Bundle extras = intent.getExtras();

        String message = (String)extras.get("message");

        Log.d("Tag", "msg:" + message);
        Log.d(Constants.TAG, "Received intent to register");
        final String registrationId = intent.getStringExtra(
                EXTRA_REGISTRATION_ID);
        notifcation(registrationId);
        String error = intent.getStringExtra(EXTRA_ERROR);
        if (error == null) {
            registerDevice(registrationId);

        } else {
            handleRegistrationError(error);
        }
     }
    private void notifcation(String id) {

        nm = (NotificationManager) RegistrationIDReceiver.this.getSystemService(Context.NOTIFICATION_SERVICE);
        CharSequence from = "Please Testing for Recive id";
        CharSequence message = "received ID"+id;
        Intent notifyintent = new Intent(getApplicationContext(),Akashc2dmActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0,notifyintent, 0);
        Notification notif = new Notification(R.drawable.ic_launcher,"Please take your Looking 4 Answers daily survey now", System.currentTimeMillis());
        notif.setLatestEventInfo(getApplicationContext(), from, message, contentIntent);
        nm.notify(1, notif);


    }

    private void registerDevice(String registrationId) {
        Log.d(Constants.TAG, "Will now register device with ID: " +
                registrationId);
        try {
            registrar.registerIdWithC2DMService(registrationId);
        } catch (RegistrationException e) {
            Log.e(Constants.TAG, e.getMessage(), e);
        }
    }

    private void handleRegistrationError(String error) {
        Log.e(Constants.TAG, "Registration error " + error);
        Log.e(Constants.TAG,
                "Please click the registration button again to register the device.");
    }
}

//RegistrationIDRegistrar.java files

class RegistrationIDRegistrar {

    private static final String REGISTER_NEW_DEVICE = "register_device";
    private static final String NODE_ID_PARAMETER = "nodeid";
    private static final String REGISTRATION_IS_PARAMETER = "registrationid";
    private final String url;
    static final String MASHMOBILE_C2DM_SERVER_URL = "http://10.0.1.3:8888";


    private RegistrationIDRegistrar(String url) {
        this.url = url;
    }

    void registerIdWithC2DMService(final String registrationId) throws RegistrationException {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        String nodeId = "realNodeId";
        final String requestUrl = createRegistrationUrl(registrationId, nodeId);
        HttpGet request = new HttpGet(requestUrl);
        try {
            HttpResponse response = httpClient.execute(request);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != 200) {
                throw new RegistrationException(String.format(
                        "Could not register %s with the server.", registrationId),
                        requestUrl, statusCode);
            }
        } catch (IOException e) {
            throw new RegistrationException(String.format(
                    "Registration of %s failed.", registrationId), requestUrl, e);
        }
    }

    private String createRegistrationUrl(String registrationId, String nodeId) {
        return String.format("%s/%s?%s=%s&%s=%s",
                url, REGISTER_NEW_DEVICE, NODE_ID_PARAMETER, nodeId,
                REGISTRATION_IS_PARAMETER, registrationId);
    }

    static RegistrationIDRegistrar getInstance() {
        return new RegistrationIDRegistrar(MASHMOBILE_C2DM_SERVER_URL);
    }
}

and at last use manifest file

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

    <uses-sdk android:minSdkVersion="8" />
<permission
            android:name="com.google.android.c2dm.permission.C2D_MESSAGE"
            android:protectionLevel="signature"/>
    <uses-permission
            android:name="com.google.android.c2dm.permission.C2D_MESSAGE"/>

    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
   <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Akashc2dmActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".C2DMBroadcastReceiver"
                  android:permission="com.google.android.c2dm.permission.SEND"
                >
            <intent-filter>
                <action
                    android:name="com.google.android.c2dm.intent.REGISTRATION"/>
                <category android:name="com.technosoft.Akashc2dm"/>
            </intent-filter>
            <intent-filter>
                <action
                    android:name="com.google.android.c2dm.intent.RECEIVE"/>
                <category android:name="com.technosoft.Akashc2dm"/>
            </intent-filter>
        </receiver>


        <service android:name=".RegistrationIDReceiver"
              >
            <intent-filter>
                <action
                        android:name="com.technosoft.c2dm.intent.REGISTER"/>
                <category android:name="com.technosoft.Akashc2dm"/>
            </intent-filter>
        </service>
        <service
            android:name=".C2DMService">
            <intent-filter>
                <action
                    android:name="com.technosoft.c2dm.intent.START_SERVICE"/>
                <category android:name="com.technosoft.Akashc2dm"/>
            </intent-filter>
            </service>

        <meta-data android:value="true" android:name="ADMOB_ALLOW_LOCATION_FOR_ADS"/>


    </application>

please tell me how to fetch register id and send massage to third party appication in c2dm

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T04:21:38+00:00Added an answer on May 29, 2026 at 4:21 am

    There has above code code working successfully.There has some change
    in C2DMBroadcastReceiver.java class for receive message and There has
    add MessageClass.java class for sending message to server

    C2DMBroadcastReceiver.java file

    public class C2DMBroadcastReceiver extends BroadcastReceiver {
        NotificationManager nm;
         @Override
        public final void onReceive(Context context, Intent intent) {
            if (Constants.RECEIVED_REGISTRATION_ID_FROM_GOOGLE.equals(intent.getAction())) {
                Log.d(Constants.TAG, "Received a registration ID from Google.");
                intent.setAction(Constants.REGISTRATION_INTENT);
                intent.setClassName(context, RegistrationIDReceiver.class.getName());
            } else if (Constants.RECEIVED_C2DM_MESSAGE_FROM_GOOGLE.equals(intent.getAction())) {
                Function_notification(context,intent);
                Log.d(Constants.TAG, "Received a C2DM message from Google.");
                intent.setAction(Constants.START_C2DM_SERVICE);
                intent.setClass(context, C2DMService.class);
            }
            context.startService(intent);
        }
        private void Function_notification(Context context,Intent intent ) {
    
            Bundle extras = intent.getExtras();
            Log.d("extras",""+extras);
            String message2 = (String)extras.get("collapse_key");
            Log.d("collapse_key","collapse_key=" + message2);
            String message1 = (String)extras.get("payload");
            Log.d("extras","payload=" + message1);
            String error = intent.getStringExtra("error");
            Log.d("extras","error=" + error);
        nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        CharSequence from = "Please Testing for Recive message";
        CharSequence message = message1;
        Intent notifyintent = new Intent(context,Akashc2dmActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0,notifyintent, 0);
        Notification notif = new Notification(R.drawable.icon,"Please take your Recive message", System.currentTimeMillis());
        notif.setLatestEventInfo(context, from, message, contentIntent);
        nm.notify(1, notif);
    
        }
    }
    
    
    
    > **Add This class in com.technosoft.C2dm_Server_1 package**
    

    MessageClass .java file

    public class MessageClass {
    public static final String PARAM_REGISTRATION_ID = "registration_id";
    
    public static final String PARAM_DELAY_WHILE_IDLE = "delay_while_idle";
    
    public static final String PARAM_COLLAPSE_KEY = "collapse_key";
    
    private static final String UTF8 = "UTF-8";
    
    public static String sendMessage(String auth_token, String registrationId,
            String message) throws IOException {
    
        StringBuilder postDataBuilder = new StringBuilder();
        postDataBuilder.append(PARAM_REGISTRATION_ID).append("=")
                .append(registrationId);
        postDataBuilder.append("&").append(PARAM_COLLAPSE_KEY).append("=")
                .append("1");
        postDataBuilder.append("&").append("data.payload").append("=")
        .append(URLEncoder.encode("hello", UTF8));
    
    
        byte[] postData = postDataBuilder.toString().getBytes(UTF8);
    
        // Hit the dm URL.
    
        URL url = new URL("https://android.clients.google.com/c2dm/send");
        HttpsURLConnection
                .setDefaultHostnameVerifier(new CustomizedHostnameVerifier());
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded;charset=UTF-8");
        conn.setRequestProperty("Content-Length",
                Integer.toString(postData.length));
        conn.setRequestProperty("Authorization", "GoogleLogin auth="
                + auth_token);
    
        OutputStream out = conn.getOutputStream();
        out.write(postData);
        out.close();
    
        int responseCode = conn.getResponseCode();
        if (responseCode == 401 || responseCode == 403) {  
            // The token is too old - return false to retry later, will  
            // fetch the token  
            // from DB. This happens if the password is changed or token  
            // expires. Either admin  
            // is updating the token, or Update-Client-Auth was received by  
            // another server,  
            // and next retry will get the good one from database.  
            Log.d("C2DM", "Unauthorized - need token");  
        }  
        String updatedAuthToken = conn.getHeaderField("Update-Client-Auth");  
        if (updatedAuthToken != null && !auth_token.equals(updatedAuthToken)) {  
            Log.d("C2DM",  
                    "Got updated auth token from datamessaging servers: "  
                            + updatedAuthToken);  
            sendMessage(updatedAuthToken,registrationId,
                    message);
        }  
        String responseLine = new BufferedReader(new InputStreamReader(  
                conn.getInputStream())).readLine();  
    
        // NOTE: You *MUST* use exponential backoff if you receive a 503  
        // response code.  
        // Since App Engine's task queue mechanism automatically does this  
        // for tasks that  
        // return non-success error codes, this is not explicitly  
        // implemented here.  
        // If we weren't using App Engine, we'd need to manually implement  
        // this.  
        if (responseLine == null || responseLine.equals("")) {  
            Log.i("C2DM", "Got " + responseCode  
                    + " response from Google AC2DM endpoint.");  
            throw new IOException(  
                    "Got empty response from Google AC2DM endpoint.");  
        }  
    
        String[] responseParts = responseLine.split("=", 2);  
        if (responseParts.length != 2) {  
            Log.e("C2DM", "Invalid message from google: " + responseCode  
                    + " " + responseLine);  
            throw new IOException("Invalid response from Google "  
                    + responseCode + " " + responseLine);  
        }  
    
        if (responseParts[0].equals("id")) {  
            Log.i("Tag", "Successfully sent data message to device: "  
                    + responseLine);  
        }  
    
        if (responseParts[0].equals("Error")) {  
            String err = responseParts[1];  
            Log.w("C2DM",  
                    "Got error response from Google datamessaging endpoint: "  
                            + err);  
            // No retry.  
            throw new IOException(err);  
        }  
        return responseLine;
    }
    
    private static class CustomizedHostnameVerifier implements HostnameVerifier {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    }
    

    }

    **This class use in RegistrationIDRegistrar.java class**

    RegistrationIDRegistrar.java file

    class RegistrationIDRegistrar {
    
        static final String MASHMOBILE_C2DM_SERVER_URL = "http://10.0.1.3:8888";
        String response;
    private RegistrationIDRegistrar(String url) {
    }
    void registerIdWithC2DMService(final String registrationId){
        //getAuthentification();
        Log.d("registrationId", ""+registrationId);
        try {
            String auth_key =getToken(Constants.C2DM_APPLICATION_SERVER_ID,Constants.C2DM_APPLICATION_SERVER_Password);
            Log.d("auth_key", ""+auth_key);
            response = MessageClass.sendMessage(auth_key,registrationId, "hello test android");
            Log.d("Response code", ""+response);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }  
    public static String getToken(String email, String password)
            throws IOException {
        // Create the post data
        // Requires a field with the email and the password
        StringBuilder builder = new StringBuilder();
        builder.append("Email=").append(email);
        builder.append("&Passwd=").append(password);
        builder.append("&accountType=GOOGLE");
        builder.append("&source=MyLittleExample");
        builder.append("&service=ac2dm");
    
        // Setup the Http Post
        byte[] data = builder.toString().getBytes();
        URL url = new URL("https://www.google.com/accounts/ClientLogin");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setUseCaches(false);
        con.setDoOutput(true);
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        con.setRequestProperty("Content-Length", Integer.toString(data.length));
    
        // Issue the HTTP POST request
        OutputStream output = con.getOutputStream();
        output.write(data);
        output.close();
    
        // Read the response
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                con.getInputStream()));
        String line = null;
        String auth_key = null;
        while ((line = reader.readLine()) != null) {
            if (line.startsWith("Auth=")) {
                auth_key = line.substring(5);
                Log.d("auth_key", ""+auth_key);
            }
        }
    
        // Finally get the authentication token
            // To something useful with it
            return auth_key;
        }
    
       static RegistrationIDRegistrar getInstance() {
            return new RegistrationIDRegistrar(MASHMOBILE_C2DM_SERVER_URL);
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I used NSFileManager to read and write in a file. It works fine, but
I have used this code to send mails but I am not getting any
I know it is used for identification, but when I see UUID's being used
I have used the following code to create the XML Document : procedure TForm1.btnCreateXMLClick(Sender:
i used code like this to change color of cell but properties applying only
I used linq to sql many times its work correctly but today something wrong
i used this example for my wcf-service: http://www.codeproject.com/KB/IP/WCFWPFChatRoot.aspx?msg=3713905#xx3713905xx But if the server stops, the
i ve used some ex from stackoverflow but sometimes my timer fire twice: this
I have used custom field in django registration form , every thing is working
Actually,i have used ramachandru6@gmail.com as a sender id in my app and that same

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.