title: why GCM is not giving push notification in android device?
body: <p>I am new to android and doing a demo app for gcm push notification.</p>
  
  <p>I have developed all this code and GCM push notification is coming on devices in my environment, but when I test this code in other network device gets registration id,but server side gets mismatch sender id response when sending messages to cloud.
  My code is given bellow:</p>
  
  <pre><code>        checkNotNull(CommonUtilities.SENDER_ID, "SENDER_ID");
  
      GCMRegistrar.checkDevice(this);
      GCMRegistrar.checkManifest(this);
  
      setContentView(R.layout.activity_push_android);
      mDisplay = (TextView) findViewById(R.id.display);
  
      final String regId = GCMRegistrar.getRegistrationId(this);
      Log.i(TAG, "registration id =====  " + regId);
  
      if (regId.equals("")) {
          GCMRegistrar.register(this, CommonUtilities.SENDER_ID);
      } else {
          // Device is already registered on GCM
          if (GCMRegistrar.isRegisteredOnServer(this)) {
              // Skips registration.
              Toast.makeText(getApplicationContext(),
                      "Already registered with GCM", Toast.LENGTH_LONG)
                      .show();
          } else {
              // Try to register again, but not in the UI thread.
              // It's also necessary to cancel the thread onDestroy(),
              // hence the use of AsyncTask instead of a raw thread.
              // final Context context = this;
              mRegisterTask = new AsyncTask&lt;Void, Void, Void&gt;() {
  
                  @Override
                  protected Void doInBackground(Void... params) {
                      // Register on our server
                      // On server creates a new user
                      // ServerUtilities.register(context, name, email,
                      // regId);
                      return null;
                  }
  
                  @Override
                  protected void onPostExecute(Void result) {
                      mRegisterTask = null;
                      mDisplay.setText("ffffff        " + regId);
                  }
  
              };
              mRegisterTask.execute(null, null, null);
          }
      }
      // regId = GCMRegistrar.getRegistrationId(this);
      mDisplay.setText("ffffff        " + regId);
      Log.i(TAG, "registration id =====!!!!  " + regId);
  }
  
  private void checkNotNull(Object reference, String name) {
      if (reference == null) {
          throw new NullPointerException(getString(R.string.error_config,
                  name));
      }
  }
  
  @Override
  protected void onPause() {
      super.onPause();
      GCMRegistrar.unregister(this);
  }
    }
  </code></pre>
  
  <p>receiver:</p>
  
  <pre><code>public GCMIntentService() {
      super(CommonUtilities.SENDER_ID);
  
  }
  
  private static final String TAG = "===GCMIntentService===";
  
  @Override
  protected void onRegistered(Context arg0, String registrationId) {
      Log.i(TAG, "Device registered: regId = " + registrationId);
  }
  
  @Override
  protected void onUnregistered(Context arg0, String arg1) {
      Log.i(TAG, "unregistered = " + arg1);
  }
  
  @Override
  protected void onMessage(Context arg0, Intent message) {
      Bundle extras = message.getExtras();
  
      for (String key : extras.keySet()) {
          Log.d(getClass().getSimpleName(),
                  String.format("onMessage: %s=%s", key,
                          extras.getString(key)));
  
          Toast.makeText(getApplicationContext(), "hii", Toast.LENGTH_LONG)
                  .show();
      }
      Log.i(TAG, "new message= ");
  
      // ///////////////////
  
      long when = System.currentTimeMillis();
      NotificationManager notificationManager = (NotificationManager) context
              .getSystemService(Context.NOTIFICATION_SERVICE);
      Notification notification = new Notification(R.drawable.ic_launcher,
              (CharSequence) message, when);
      String title = context.getString(R.string.app_name);
      Intent notificationIntent = new Intent(context,
              PushAndroidActivity.class);
      // set intent so it does not start a new activity
      notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
              | Intent.FLAG_ACTIVITY_SINGLE_TOP);
      PendingIntent intent = PendingIntent.getActivity(context, 0,
              notificationIntent, 0);
      notification.setLatestEventInfo(context, title, (CharSequence) message,
              intent);
      notification.flags |= Notification.FLAG_AUTO_CANCEL;
      notificationManager.notify(0, notification);
  }
  
  @Override
  protected void onError(Context arg0, String errorId) {
      Log.i(TAG, "Received error: " + errorId);
  }
  
  @Override
  protected boolean onRecoverableError(Context context, String errorId) {
      return super.onRecoverableError(context, errorId);
  }
    }
  </code></pre>
  
  <p>This code has given me a registration id successfully.To test my code I have executed a java class to send message to cloud.That java class is:</p>
  
  <pre><code>  public static void main(String args[]) {
  
      try {
  
          Sender sender = new Sender(
                  "my server api");
  
          ArrayList&lt;String&gt; devicesList = new ArrayList&lt;String&gt;();
  
          devicesList
                  .add("reg id");
          // devicesList.add("reg id");
  
          // Use this line to send message without payload data
          // Message message = new Message.Builder().build();
  
          // use this line to send message with payload data
          Message message = new Message.Builder()
                  .collapseKey("1")
                  .timeToLive(3)
                  .delayWhileIdle(true)
                  .addData("message",
                          "this text be will be seen in notification bar!!")
                  .build();
  
          // Use this code to send to a single device
          // Result result = sender
          // .send(message,
          // "APA91bGiRaramjyohc2lKjAgFGpzBwtEmI8tJC30O89C2b3IjP1CuMeU1h9LMjKhmWuZwcXZjy1eqC4cE0tWBNt61Kx_SuMF6awzIt8WNq_4AfwflaVPHQ0wYHG_UX3snjp_U-5kJkmysdRlN6T8xChB1n3DtIq98w",
          // 1);
  
          // Use this for multicast messages
          MulticastResult result = sender.send(message, devicesList, 1);
          sender.send(message, devicesList, 1);
  
          System.out.println(result.toString() + "\n");
          if (result.getResults() != null) {
              int canonicalRegId = result.getCanonicalIds();
              if (canonicalRegId != 0) {
                  System.out.println(canonicalRegId);
              }
          } else {
              int error = result.getFailure();
              System.out.println(error);
          }
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
    }
  </code></pre>
  
  <p>Now the problem is I am not getting any push notification or log cat message.Thanks in advance for help.
  Manifest:</p>
  
  <p>sdk
          android:minSdkVersion="8"
          android:targetSdkVersion="16" /></p>
  
  <pre><code>&lt;permission
      android:name="com.sagar.gcma.permission.C2D_MESSAGE"
      android:protectionLevel="signature" /&gt;
  
  &lt;uses-permission android:name="com.sagar.gcma.permission.C2D_MESSAGE" /&gt;
  &lt;uses-permission android:name="android.permission.GET_ACCOUNTS" /&gt;
  &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
  &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
  &lt;uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /&gt;
  
  &lt;application
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" &gt;
      &lt;activity
          android:name=".PushAndroidActivity"
          android:label="@string/title_activity_push_android" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
  
              &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
  
      &lt;receiver
          android:name="com.google.android.gcm.GCMBroadcastReceiver"
          android:permission="com.google.android.c2dm.permission.SEND" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="com.google.android.c2dm.intent.RECEIVE" /&gt;
              &lt;action android:name="com.google.android.c2dm.intent.REGISTRATION" /&gt;
  
              &lt;category android:name="com.sagar.gcma" /&gt;
          &lt;/intent-filter&gt;
      &lt;/receiver&gt;
  
      &lt;service android:name=".GCMIntentService" /&gt;
  &lt;/application&gt;
  </code></pre>