2012-09-11 39 views
0

我有Android應用程序,我使用GCM,我想顯示設備註冊ID窗口或日誌貓來測試應用程序,我曾經對模擬器有過的日誌貓註冊ID,但我需要看到它如何?如何在消息窗口上顯示設備註冊ID

此外,當我測試我的手機停止項目的應用...消息出現,雖然它因此未出現在模擬器,當我評論這些權限

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

此消息消失

package com.example.elarabygroup; 

import com.google.android.gcm.GCMBaseIntentService; 
import com.google.android.gcm.GCMRegistrar; 

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

public class GCMIntenetService extends GCMBaseIntentService { 
    private static final String GCM_SENDER_ID = "1111111111"; 

    public GCMIntenetService() { 
     super(); 
    } 

    @Override 
    protected void onRegistered(Context context, String registrationId) { 
     Log.i(TAG, "Device registered: regId = " + registrationId); 
     GCMRegistrar.setRegisteredOnServer(context, true); 
    } 

    @Override 
    protected void onUnregistered(Context context, String registrationId) { 
     Log.i(TAG, "Device unregistered"); 
     if (GCMRegistrar.isRegisteredOnServer(context)) { 
      String regId = ""; 
      Log.i(TAG, "unregistering device (regId = " + regId + ")"); 
      GCMRegistrar.setRegisteredOnServer(context, false); 
     } else { 
      // This callback results from the call to unregister made on 
      // ServerUtilities when the registration to the server failed. 
      Log.i(TAG, "Ignoring unregister callback"); 
     } 
    } 

    @Override 
    protected void onError(Context context, String errorId) { 
     // push error processing 
    } 

    @Override 
    protected void onMessage(Context arg0, Intent arg1) { 
     Log.i(TAG, "Received message"); 
     Log.i(TAG, "EXTRAS" + arg1.getExtras()); 
     //String message = getString(R.string.gcm_message); 
     generateNotification(arg0, arg1.getStringExtra("Please download our new updates")); 
     // notifies user about message 

    } 

    private void generateNotification(Context arg0, String stringExtra) { 
     // TODO Auto-generated method stub 

    } 

    public static void registerInGCMService(Context context) { 
     if (!checkIsGCMServiceAvailable(context)) { 
      return; 
     } 
     final String regId = GCMRegistrar.getRegistrationId(context); 
     if (regId.equals("")) { 
      try { 
       GCMRegistrar.register(context, GCM_SENDER_ID); 
      } catch (Exception ex) { 
      } 
     } else { 
      // Already registered 
     } 
    } 

    public static boolean checkIsGCMServiceAvailable(Context context) { 
     try { 
      GCMRegistrar.checkDevice(context); 
      GCMRegistrar.checkManifest(context); 
      return true; 
     } catch (Throwable th) { 
      return false; 
     } 
    } 

} 

回答

1

Settings.Secure#ANDROID_ID將Android ID作爲唯一的64位十六進制字符串返回。

import android.provider.Settings.Secure; 

private String android_id = Secure.getString(getContext().getContentResolver(), 
                 Secure.ANDROID_ID); 

android_id包含設備ID。

作爲一個示例,我只將該更改添加到registerInGCMService()方法。

public class GCMIntenetService extends GCMBaseIntentService { 
    private static String GCM_SENDER_ID ; 

    public GCMIntenetService() { 
     super(); 
    } 



    public static void registerInGCMService(Context context) { 


     GCM_SENDER_ID = Secure.getString(getContext().getContentResolver(), 
                  Secure.ANDROID_ID); 

     if (!checkIsGCMServiceAvailable(context)) { 
      return; 
     } 
     final String regId = GCMRegistrar.getRegistrationId(context); 
     if (regId.equals("")) { 
      try { 
       GCMRegistrar.register(context, GCM_SENDER_ID); 
      } catch (Exception ex) { 
      } 
     } else { 
      // Already registered 
     } 
    } 



} 
+0

如果你正在努力尋找日誌消息,即Log.i(TAG,「設備註冊了該通知用戶: regId =「+ registrationId);在logcat中,然後按照@ user1597833的建議。 –

+0

我在哪裏可以添加此代碼 – egydeveloper

+0

@egydeveloper我編輯了我的答案。您現在可以看到它的添加位置。 –

0

可以調用在活動廣播接收機,其中u想要顯示或彈出消息等烤麪包。下面代碼做相同

下面

1)修改onRegistered()方法

protected void onRegistered(Context context, String registrationId) 
{ 
     Log.i(TAG, "Device registered: regId = " + registrationId); 
     GCMRegistrar.setRegisteredOnServer(context, true); 
     CommonUtilities.displayMessage(context,registrationId); 
} 

2 )更改如下所示的常見util的displayMessage()

static void displayMessage (Context context, String message,String senderID,String recieverId,String Type) 

{ 
      Intent intent = new Intent(DISPLAY_MESSAGE_ACTION); 
      intent.putExtra(EXTRA_MESSAGE, message); 
      context.sendBroadcast(intent); 
} 

3)on Main activity write we ma柯Boradcaste接收器時,把與GCM註冊應用程序下面的代碼在mainactivity或其中u要顯示彈出

@Override 
     protected void onResume() { 

      registerReceiver(mHandleMessageReceiver, new IntentFilter(
        CommonUtilities.DISPLAY_MESSAGE_ACTION)); 

     } 

    private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) 
      { 
         // you pop message display here when app. will get registered 
Toast.makeText(context,getIntent().getExtras().getString(CommonUtilities.EXTRA_MESSAGE), 2).show(); 

      } 
     }; 

    @Override 
     protected void onStop() { 
      // TODO Auto-generated method stub 
      super.onPause(); 
      relaseMemory(); 
     } 
相關問題