2012-05-21 170 views
0

我已經使用This guide。但是,如果我將其添加到另一個項目中,我沒有收到任何東西: 我已對清單進行了更改,以便與指南相匹配(我認爲):Android C2DM不會註冊

問題:但現在我沒有得到我的註冊嘗試的任何響應。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="de.vogella.android.c2dm" android:versionCode="1" 
    android:versionName="1.0"> 
    <permission android:name="de.vogella.android.c2dm.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="de.vogella.android.c2dm.permission.C2D_MESSAGE" /> 
    <!-- Permissions --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 


    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> 
     <activity android:name="RegisterActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <service android:name="de.vogella.android.c2dm.C2DMReceiver" /> 

     <!-- Only C2DM servers can send messages for the app. If permission is 
      not set - any other app can generate it --> 
     <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND"> 
      <!-- Receive the actual message --> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <category android:name="de.vogella.android.c2dm" /> 
      </intent-filter> 
      <!-- Receive the registration id --> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="de.vogella.android.c2dm" /> 
      </intent-filter> 
     </receiver> 
     <activity android:name="ResultActivity"></activity> 
    </application> 
</manifest> 

如何開始註冊(已檢查它伸進如果條件)(從C2DM2Activity叫):

public void checkRegistered() { 
     String registered = C2DMessaging 
       .getRegistrationId(getApplicationContext()); 
     if (registered.equals("")) { 
      Log.i(TAG, "starting registration of C2DM"); 
      C2DMessaging.register(this, C2DMID); 
     } 
    } 

Filestructure:

Filestructure

回答

1

在代碼部分。 C2DMBaseReceiver中,有一個地方將C2DMReceiver定義在應用程序包默認文件夾中。

感謝所有其他人試圖提供幫助。

0

嘗試改變

android:name="com.google.android.c2dm.C2DMBroadcastReceiver" 

android:name="dk.lector.cms.c2dm.YourReceiverClassName" 
+0

這是我的BroadcastReceiver :-) –

1

如果你添加一個 ''以您的服務名稱,我認爲這是它應該的方式。

試試這個<service android:name=".c2dm.C2DMReceiver" />

+0

試了一下,:-( –

+0

沒有改變在logcat中,你得到這樣的消息「接收器沒有發現」的東西?當您嘗試註冊 – user1393817

+0

都能跟得上我沒有 我回答我自己的問題,否則,謝謝你的嘗試,這可能也是一個雙重原因,所以生病+1你:) –

0

您在C2DMBroadcastReceiver上述評論說是你的接收機。那麼我在de.vogella.android.c2dm包中看到的C2DMReceiver是什麼?

而你的問題是關於如何開始註冊。在本教程下的部分2.2。獲取移動應用的註冊ID時,需要調用register方法。當註冊Id從Google服務器返回時,它將被捕獲到您的接收器的onReceive中。在他的教程中,註冊接收者是C2DMRegistrationReceiver。如果您說C2DMBroadcastReceiver是您的接收器,並且您確信這一點,只需撥打寄存器onReceive應收到該消息。

另外,您應該嘗試發佈整個Manifest.xml。請確保您正在使用INTERNET許可和使用自定義的權限:

<permission 
    android:name="de.vogella.android.c2dm.simpleclient.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission 
    android:name="de.vogella.android.c2dm.simpleclient.permission.C2D_MESSAGE" /> 
+0

這是因爲它不是我選擇的簡單接收者,我已經採取了他更詳細的一個,從他的源代碼。 當它完全是他的時候,它工作的很好,但如果我嘗試在自己的項目中實現他,那麼所有事情都會停止發送。 我會嘗試註冊它,但它不應該需要,因爲即時通訊從清單中進行。 清單更新,顯示一切,這是一個顯示錯誤在這裏現場否則它從這裏開始 –

+0

你不**從清單註冊**。你只是宣佈處理註冊廣播的接收器。正確的註冊是通過「註冊」方法完成的,該方法向Google服務器發出註冊呼叫。 –

+0

這是完全不正確的。 Quote:「意圖過濾器是IntentFilter類的一個實例,但是,由於Android系統必須在啓動該組件之前知道組件的功能,意圖過濾器通常不是在Java代碼中設置的,而是在應用程序的清單文件(AndroidManifest.xml)作爲元素(一個例外是通過調用Context.registerReceiver()動態註冊的廣播接收器的過濾器;它們直接創建爲IntentFilter對象)。 –

0

你長了與C2DM註冊的包名稱是一樣的其他項目中,轉移,因爲C2DM它確定其Package

的應用
+0

不,它不是。那麼我需要爲此創建一個新的C2DM帳戶嗎? 真的認爲它只是附加到我的電子郵件,然後我可以註銷它在1個項目,並註冊在另一個? –

+0

嘗試製作新帳戶,爲此,但仍然沒有運氣:( 而順便說一下,在直接C/P'ed項目下工作的第一個帳戶,沒有在該軟件包中註冊,所以不太確定他們是否確定任何東西 –

+0

我確信你的包名必須註冊 –