Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在客户端获取GCM令牌时出错_Android_Android Intentservice - Fatal编程技术网

Android 在客户端获取GCM令牌时出错

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

包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代码


这是我在项目中的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();
//在这里执行操作
}