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 감사합니다 : 그것은 넥서스 원과 하나 작동하지 않습니다.