2011-11-06 2 views
0

C2DM 등록을 구현하는 데 문제가 있습니다. 내 BroadcastReceiver가 호출되지 않습니다.Android C2DM 등록, BroadCastReceiver가 호출되지 않음

내 Gmail 계정을 설정 한 상태에서 에뮬레이터 (Google API (Google Inc.) - API 레벨 8)를 사용하고 있습니다. 토마스 말 스텐 (Thomas Malmsten)의 BroadcastReceiver가 내 에뮬레이터 (link)에서 잘 작동하기 때문에 작동하는 것 같습니다. 지금은

Here is my manifest : 

<permission android:name="my.package.permission.C2D_MESSAGE" android:protectionLevel="signature"></permission> 
<uses-permission android:name="my.package.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.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
<uses-sdk android:minSdkVersion="8" /> 

<application android:name=".utils.MyApp" ...> 

    <receiver android:name=".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="my.package" /> 
     </intent-filter> 
     <!-- Receive the registration id --> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <catemgory android:name="my.package" /> 
     </intent-filter> 
    </receiver> 

    <activity android:name=".views.LoginScreen" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <!-- lots of activities --> 
    <!-- lots of services --> 

</application> 

은, 난 그냥 로그 캣에 뭔가를 쓰고 싶어요.

Context context = MyApp.getAppContext(); 
      Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
      registrationIntent.putExtra("app", PendingIntent.getBroadcast(context, 0, new Intent(), 0)); 
      registrationIntent.putExtra("sender", "[email protected]"); 
      Log.w("Register", "Intent to register"); 
      context.startService(registrationIntent); 

마침내는 로그 캣 :

My Broadcast Receiver 
package my.package; 

import ...; 

public class C2DMBroadCastReceiver extends BroadcastReceiver { 

    @Override 
    public final void onReceive(Context context, Intent intent) { 
     Log.d("C2DMBroadCastReceiver ", "Received something from Google."); 
     if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) { 
      Log.d("C2DMBroadCastReceiver ", "Received a registration ID from Google."); 
     } else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) { 
      Log.d("C2DMBroadCastReceiver ", "Received a C2DM message from Google."); 
     } 
    } 
} 

여기 내 등록 fonction있는 모든 코드에 대한

W/Register( 344): Intent to register 
I/ActivityManager( 58): Starting activity: Intent { cmp=my.package/.views.Conver 
sationList } 
D/GoogleLoginService( 173): onBind: Intent { act=android.accounts.AccountAuthen 
ticator cmp=com.google.android.gsf/.loginservice.GoogleLoginService } 
D/dalvikvm( 173): GC_FOR_MALLOC freed 4630 objects/378200 bytes in 133ms 
D/dalvikvm( 344): GC_FOR_MALLOC freed 1799 objects/279192 bytes in 95ms 
D/NativeCrypto( 344): Freeing OpenSSL session 
I/ActivityManager( 58): Displayed activity my.package/.views.ConversationList: 1 
352 ms (total 1352 ms) 
D/dalvikvm( 344): GC_EXTERNAL_ALLOC freed 2170 objects/476328 bytes in 90ms 
D/dalvikvm( 344): GC_FOR_MALLOC freed 6985 objects/461360 bytes in 151ms 
D/dalvikvm( 344): GC_FOR_MALLOC freed 612 objects/32376 bytes in 153ms 
I/dalvikvm-heap( 344): Grow heap (frag case) to 3.239MB for 87396-byte allocati 
on 
D/dalvikvm( 344): GC_FOR_MALLOC freed 24 objects/1736 bytes in 51ms 
D/dalvikvm( 344): GC_FOR_MALLOC freed 0 objects/0 bytes in 146ms 
I/dalvikvm-heap( 344): Grow heap (frag case) to 3.321MB for 87396-byte allocati 
on 
D/dalvikvm( 344): GC_FOR_MALLOC freed 0 objects/0 bytes in 53ms 
D/NativeCrypto( 344): Freeing OpenSSL session 
D/dalvikvm( 344): GC_FOR_MALLOC freed 1080 objects/244032 bytes in 122ms 
I/global ( 344): Default buffer size used in BufferedReader constructor. It wo 
uld be better to be explicit if an 8k-char buffer is required. 
D/dalvikvm( 344): GC_FOR_MALLOC freed 1077 objects/120272 bytes in 53ms 
I/dalvikvm-heap( 344): Grow heap (frag case) to 3.506MB for 87396-byte allocati 
on 
D/dalvikvm( 344): GC_FOR_MALLOC freed 375 objects/24096 bytes in 52ms 
D/dalvikvm( 344): GC_FOR_MALLOC freed 3 objects/104 bytes in 49ms 
I/dalvikvm-heap( 344): Grow heap (frag case) to 3.567MB for 87396-byte allocati 
on 
D/dalvikvm( 344): GC_FOR_MALLOC freed 0 objects/0 bytes in 146ms 
D/dalvikvm( 344): GC_FOR_MALLOC freed 1 objects/16 bytes in 49ms 
I/dalvikvm-heap( 344): Grow heap (frag case) to 3.733MB for 87396-byte allocati 
on 
D/dalvikvm( 344): GC_FOR_MALLOC freed 0 objects/0 bytes in 146ms 
I/global ( 344): Default buffer size used in BufferedReader constructor. It wo 
uld be better to be explicit if an 8k-char buffer is required. 

미안하지만, 난 정말 무슨 일이 일어나고 있는지 몰라!

는 마티유에게,

PS 감사합니다 : 그것은 넥서스 원과 하나 작동하지 않습니다.

답변

0

정말 어리석은 실수입니다. 매니페스트의 카테고리 대신 카테엠리를 사용하십시오.