我在我的应用程序中使用推送通知(GCM),并且在Android 4.2.2(Galaxy Nexus和HTC One)上运行时它可以正常工作
我也有平板电脑(华硕变压器T101运行android 4.03)和Nexus One(运行Android 2.3.6)
在平板电脑和Nexus上运行应用程序,推送通知方法不起作用。
如文档中所示,我已将android.permission.GET_ACCOUNTS的权限包含在4.0.3以下版本中,但没有成功。
调用GCM库的方法运行:
final String regId = GCMRegistrar.getRegistrationId(Hello.this);
if (regId.equals("")) {
GCMRegistrar.register(Hola.this, "MY_ID_SENDER"); //Sender ID
} else {
Log.i("masterhv", "already registered");
}
但是没有执行处理响应的方法(onRegistered)......我知道Google没有回复
正如我所说,它适用于具有android 4.2.2和4.1的设备,权限是正确的,但不适用于Android 4.0.3及更低版本。
我感谢任何帮助。
谢谢和问候
答案 0 :(得分:1)
使用旧版本的GCM(1-2个月前已弃用aprox。)如果用户运行的版本低于4.0.4,则必须要求用户添加Google帐户
查看API文档仍然是一项要求
移动设备运行使用GCM的Android应用程序的设备。这必须是安装了Google Play商店的2.2 Android设备,如果设备运行的版本低于Android 4.0.4,则必须至少有一个已登录的Google帐户。或者,为了进行测试,您可以使用运行Android 2.2和Google API的模拟器。
我没有用过上一个版本。如果您决定使用旧帐户,则必须生成对帐户设置的访问权限才能添加帐户:
private String[] getAccountNames() {
AccountManager accMan = AccountManager.get(this);
Account[] accArray = accMan.getAccountsByType("com.google");
String[] names = new String[accArray.length];
for (int i = 0; i < names.length; i++) {
names[i] = accArray[i].name;
}
return names;
}
因此,如果数组为0,您可以弹出一个对话框,要求转到帐户设置。
如果您尝试注册,如果没有帐户,您应该在logcat上看到一条消息错误ACCOUNT_MISSING。