2012-04-11 63 views
0

我尝试注册到C2DM,但它不起作用。我在我的项目中包含了com.google.android.c2dm。当我试图找到com.google.android.c2dm.intent.REGISTER,它并没有发现什么:不能使用C2DM意图(android)

String action = "com.google.android.c2dm.intent.REGISTER"; 
final PackageManager packageManager = context.getPackageManager(); 
final Intent intent = new Intent(action); 
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 

list.size()给0。任何想法?

编辑:亩清单文件包含校正权限:

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
+0

你在2.1设备上吗? C2DM适用于2.2及更高版本。 – petey 2012-04-11 15:19:50

+0

我开发的2.2和更高版本 – Alexis 2012-04-11 19:22:42

回答

0

你需要确保你在你的清单文件中com.google.android.c2dm.permission.RECEIVE权限。

另外,我实现了注册使用以下样板

Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); 
registrationIntent.putExtra("sender", emailOfSender); 
startService(registrationIntent); 

您可以参考the full docs的基本设置。

+0

编辑的问题。我使用相同的代码,但它当然会触发错误:SERVICE_NOT_AVAILABLE – Alexis 2012-04-11 15:14:16

+0

我假设你已经注册了c2dm? http://code.google.com/intl/sv-SE/android/c2dm/signup.html另外谷歌提示,错误的意思是“设备无法读取响应,或从服务器有500/503可以稍后重试,应用程序应该使用指数后退和重试。“ – Rob 2012-04-11 15:16:17

+0

是的,我已经注册。我不知道我的注册是否活动,但如果问题是我的帐户,我想我会得到一个错误,如AUTHENTICATION_FAILED或INVALID_SENDER – Alexis 2012-04-12 06:43:21