Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code gets stuck at wakelock,while registering to GCM?

It does not get registration id from GCM server the app does not give any error,this is my logcat.

    07-13 16:43:39.920: I/** pushAndroidActivity **(5310): inside oncreate() 
07-13 16:43:39.920: I/** pushAndroidActivity **(5310): started registration 
07-13 16:43:39.920: D/GCMRegistrar(5310): resetting backoff for com.example.registration_id
07-13 16:43:39.920: V/GCMRegistrar(5310): Registering app com.example.registration_id of senders 803641917196
07-13 16:43:42.735: V/GCMBroadcastReceiver(5310): onReceive: com.google.android.c2dm.intent.REGISTRATION
07-13 16:43:42.735: V/GCMBroadcastReceiver(5310): GCM IntentService class: com.example.registration_id.GCMIntentService
07-13 16:43:42.735: V/GCMBaseIntentService(5310): Acquiring wakelock

This is the main Activity .i have used the existing gcm.jar file to use GCMRegistrar class methods.

package com.example.registration_id;

import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.app.Activity;

import com.google.android.gcm.GCMRegistrar;

public class MainActivity extends Activity {


    private String TAG = "** pushAndroidActivity **";
    EditText edittext;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i(TAG, "inside oncreate() ");




        //check if registered,if not get registration id from GCM server
        if(GCMRegistrar.getRegistrationId(this).equals(""))
        {
            Log.i(TAG, "started registration ");
            GCMRegistrar.register(this, "803641917206");

        }
        else
        {
        final String regId = GCMRegistrar.getRegistrationId(this);
        Log.i(TAG, "registration id =====  "+regId);

        edittext=(EditText)findViewById(R.id.msg);
        edittext.setText(regId);
        }
    }




}

This is the service class-

package com.example.registration_id;

import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.google.android.gcm.GCMBaseIntentService;

public class GCMIntentService extends GCMBaseIntentService {

    private static final String TAG = "===GCMIntentService===";



    //default constructor
    protected GCMIntentService(String senderId) {
        super(senderId);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onError(Context arg0, String arg1) {
        // TODO Auto-generated method stub
        Log.i(TAG, "error ");
    }

    @Override
    protected void onMessage(Context arg0, Intent arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    protected void onRegistered(Context arg0, String registrationId) {
        // TODO Auto-generated method stub
        Log.i(TAG, "Device registered: regId = " + registrationId);

    }

    @Override
    protected void onUnregistered(Context arg0, String arg1) {
        // TODO Auto-generated method stub

    }

}
like image 682
Rishikesh Avatar asked Jan 01 '26 19:01

Rishikesh


1 Answers

onReceive: com.google.android.c2dm.intent.REGISTRATION

onReceiver is being called which means you are getting a message back.

  protected GCMIntentService(String senderId) {
      super(senderId);                }  

This is your problem. you must declare a public, no argument constructor for your GCMBaseIntentService subclass. Otherwise, your GCMIntentService class can't be constructed and used properly by the background services.

Why?

protected GCMIntentService(String senderID){
super(senderId);}

because this protected constructor isn't visible to the service class that handles all incoming intents, because it is in a different package.

Hardcode the senderId in a static constant in your GCMIntentService class because that will no longer change from google.

like image 59
Ryan Gray Avatar answered Jan 03 '26 09:01

Ryan Gray



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!