Android 在客户端获取GCM令牌时出错
包nath.prem.com.premgcmproject 导入android.content.Intent 导入com.google.android.gms.iid.InstanceIDListenerService /***由prem于2016年7月22日创建。*/公共类GCMTokenRefreshListenerService扩展InstanceIDListenerService{ //如果更改了令牌,则再次注册设备@Override public void onTokenRefresh(){Intent Intent=new Intent(这是GCMRegistrationIntentService.class);startService(Intent);} 在客户端获取GCM令牌时出错 致命异常:IntentService[] java.lang.CompatibleClassChangeError:com.google.android.gms.iid.zzd.zzdL上的android.support.v4.content.ContextCompat(未知源) 在 com.google.android.gms.iid.zzd.(未知来源)com.google.android.gms.iid.zzd.(未知来源)com.google.android.gms.iid.InstanceID.zza(未知来源)com.google.android.gms.iid.InstanceID.getInstance(未知来源) 这是我在获取gcm令牌时遇到的错误 公共类GCMRegistrationIntentService扩展了IntentService{//成功和错误常量公共静态最终字符串注册\u success=“RegistrationSuccess”;公共静态最终字符串注册\u ERROR=“RegistrationError”;//类构造函数公共GCMRegistrationIntentService(){super(“”;}@Override protected void onHandleIntent(Intent Intent){//将gcm注册到设备注册表项gcm();}私有void注册表项gcm(){//Registration complete intent initially null intent Registration complete=null;//注册令牌也为null//我们将在成功时获取令牌注册字符串token=null;SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(此);重试{//创建instanceid instanceid instanceid=instanceid.getInstance(this);//////从实例id token=instanceid.getToken获取令牌(getString(R.string.gcm_defaultSenderId),GoogleCloudMessaging.instance_id_SCOPE,null);//在日志中显示令牌,以便我们可以复制它以发送推送通知//您还可以通过将令牌存储到服务器日志中来扩展应用程序。w(“GCMRegIntentService”,“token:+token”);//注册完成时创建意图成功注册完成=新意图(注册成功);//将令牌放入intent//registrationComplete.putExtra(“令牌”,令牌);}捕获(异常e){//如果发生任何错误,则记录日志。w(“GCMRegentService”,“注册错误”);registrationComplete=new intent(注册错误);}//发送注册已完成的广播LocalBroadcastManager.getInstance(此).sendBroadcast(注册完成);} 这是该类的java代码Android 在客户端获取GCM令牌时出错,android,android-intentservice,Android,Android Intentservice,包nath.prem.com.premgcmproject 导入android.content.Intent 导入com.google.android.gms.iid.InstanceIDListenerService /***由prem于2016年7月22日创建。*/公共类GCMTokenRefreshListenerService扩展InstanceIDListenerService{ //如果更改了令牌,则再次注册设备@Override public void onTokenRefresh
这是我在项目中的menifest文件……但我在RegistrationEventService中看不到任何日志:试试这个, 在
build.gradle中添加compile'com.google.android.gms:play services gcm:9.0.2'
依赖项
private void registerToGCM() {
new AsyncTask<String, String, String>() {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(LoginActivity.this);
progressDialog.setMessage(getString(R.string.gcm_register_message));
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
String registryId = null;
try {
InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
registryId = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
} catch (Exception ex) {
Log.e("MAINACIVITY", "gcm register Error " + ex.toString());
}
return registryId;
}
@Override
protected void onPostExecute(String registeredId) {
super.onPostExecute(registeredId);
progressDialog.dismiss();
// perform action here
}
}.execute("");
}
private void registerToGCM(){
新建异步任务(){
进行对话进行对话;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=新建progressDialog(LoginActivity.this);
progressDialog.setMessage(getString(R.string.gcm_register_message));
progressDialog.setCancelable(假);
progressDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串registryId=null;
试一试{
InstanceID InstanceID=InstanceID.getInstance(getApplicationContext());
registryId=instanceID.getToken(getString(R.string.gcm_defaultSenderId),GoogleCloudMessaging.INSTANCE_ID_SCOPE,null);
}捕获(例外情况除外){
Log.e(“维护性”、“gcm寄存器错误”+ex.toString());
}
返回注册表ID;
}
@凌驾
受保护的void onPostExecute(字符串registeredId){
super.onPostExecute(registeredId);
progressDialog.disclose();
//在这里执行操作
}
}.执行(“”);
}
试试这个,
在build.gradle中添加compile'com.google.android.gms:play services gcm:9.0.2'
依赖项
private void registerToGCM() {
new AsyncTask<String, String, String>() {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(LoginActivity.this);
progressDialog.setMessage(getString(R.string.gcm_register_message));
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
String registryId = null;
try {
InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
registryId = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
} catch (Exception ex) {
Log.e("MAINACIVITY", "gcm register Error " + ex.toString());
}
return registryId;
}
@Override
protected void onPostExecute(String registeredId) {
super.onPostExecute(registeredId);
progressDialog.dismiss();
// perform action here
}
}.execute("");
}
private void registerToGCM(){
新建异步任务(){
进行对话进行对话;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=新建progressDialog(LoginActivity.this);
progressDialog.setMessage(getString(R.string.gcm_register_message));
progressDialog.setCancelable(假);
progressDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串registryId=null;
试一试{
InstanceID InstanceID=InstanceID.getInstance(getApplicationContext());
registryId=instanceID.getToken(getString(R.string.gcm_defaultSenderId),GoogleCloudMessaging.INSTANCE_ID_SCOPE,null);
}捕获(例外情况除外){
Log.e(“维护性”、“gcm寄存器错误”+ex.toString());
}
返回注册表ID;
}
@凌驾
受保护的void onPostExecute(字符串registeredId){
super.onPostExecute(registeredId);
progressDialog.disclose();
//在这里执行操作
}