Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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
Java Android新GCM客户端的实现问题_Java_Android_Eclipse_Google Cloud Messaging_Google Play Services - Fatal编程技术网

Java Android新GCM客户端的实现问题

Java Android新GCM客户端的实现问题,java,android,eclipse,google-cloud-messaging,google-play-services,Java,Android,Eclipse,Google Cloud Messaging,Google Play Services,我正试图按照Google()的指导方针在Android上实现新的GCM客户端。 我收到的两个不同设备的错误略有不同。我注意到两台设备的getNoBackupFilesDir方法都没有收到任何方法错误。 这是Android 4.2.2的日志: 06-08 09:01:09.920: I/dalvikvm(9138): Could not find methodandroid.app.Notification$Builder.setLocalOnly, referenced from method

我正试图按照Google()的指导方针在Android上实现新的
GCM客户端。
我收到的两个不同设备的错误略有不同。我注意到两台设备的getNoBackupFilesDir方法都没有收到任何方法错误。
这是Android 4.2.2的日志:

06-08 09:01:09.920: I/dalvikvm(9138): Could not find methodandroid.app.Notification$Builder.setLocalOnly, referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza
06-08 09:01:09.920: W/dalvikvm(9138): VFY: unable to resolve virtual method 273: Landroid/app/Notification$Builder;.setLocalOnly (Z)Landroid/app/Notification$Builder;
06-08 09:01:09.920: D/dalvikvm(9138): VFY: replacing opcode 0x6e at 0x00c2
06-08 09:01:09.920: I/dalvikvm(9138): DexOpt: access denied from Lcom/google/android/gms/common/GooglePlayServicesUtil; to field Landroid/app/Notification;.extras
06-08 09:01:09.920: W/dalvikvm(9138): VFY: unable to resolve instance field 12
06-08 09:01:09.920: D/dalvikvm(9138): VFY: replacing opcode 0x54 at 0x00e1
06-08 09:01:09.920: E/dalvikvm(9138): Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza
06-08 09:01:09.920: W/dalvikvm(9138): VFY: unable to resolve check-cast 25 (Landroid/app/AppOpsManager;) in Lcom/google/android/gms/common/GooglePlayServicesUtil;
06-08 09:01:09.920: D/dalvikvm(9138): VFY: replacing opcode 0x1f at 0x000e
06-08 09:01:09.920: I/dalvikvm(9138): Could not find method android.content.pm.PackageManager.getPackageInstaller, referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zzh
06-08 09:01:09.920: W/dalvikvm(9138): VFY: unable to resolve virtual method 528: Landroid/content/pm/PackageManager;.getPackageInstaller ()Landroid/content/pm/PackageInstaller;
06-08 09:01:09.920: D/dalvikvm(9138): VFY: replacing opcode 0x6e at 0x000b
06-08 09:01:09.950: I/dalvikvm(9138): Could not find method android.support.v4.content.ContextCompat.getNoBackupFilesDir, referenced from method com.google.android.gms.iid.zzd.zzde
06-08 09:01:09.950: W/dalvikvm(9138): VFY: unable to resolve virtual method 2080: Landroid/support/v4/content/ContextCompat;.getNoBackupFilesDir (Landroid/content/Context;)Ljava/io/File;
06-08 09:01:09.950: D/dalvikvm(9138): VFY: replacing opcode 0x6e at 0x0007
06-08 09:01:09.950: W/dalvikvm(9138): threadid=11: thread exiting with uncaught exception (group=0x4174c930)
06-08 09:01:09.960: E/AndroidRuntime(9138): FATAL EXCEPTION: AsyncTask #1
06-08 09:01:09.960: E/AndroidRuntime(9138): java.lang.RuntimeException: An error occured while executing doInBackground()
06-08 09:01:09.960: E/AndroidRuntime(9138):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.lang.Thread.run(Thread.java:856)
06-08 09:01:09.960: E/AndroidRuntime(9138): Caused by: java.lang.NoSuchMethodError: android.support.v4.content.ContextCompat.getNoBackupFilesDir
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.google.android.gms.iid.zzd.zzde(Unknown Source)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.google.android.gms.iid.zzd.<init>(Unknown Source)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.google.android.gms.iid.zzd.<init>(Unknown Source)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.example.MainActivity$1.doInBackground(MainActivity.java:113)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at com.example.MainActivity$1.doInBackground(MainActivity.java:1)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-08 09:01:09.960: E/AndroidRuntime(9138):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
06-08 09:01:09.960: E/AndroidRuntime(9138):     ... 4 more
此处使用:

// AsyncTask to register Device in GCM Server
private void registerInBackground() {
    new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            String msg = "";

            InstanceID instanceID = InstanceID.getInstance(applicationContext);
            try {
                regId = instanceID.getToken(GCM_SENDER_ID,
                        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
            } catch (IOException e) {
                e.printStackTrace();
            }

            return msg;
        }

        @Override
        protected void onPostExecute(String msg) {
            if (!TextUtils.isEmpty(regId)) {

                Toast.makeText(
                        applicationContext,
                        "Registered with GCM Server successfully.\n\n"
                                + msg, Toast.LENGTH_SHORT).show();
                Log.e(TAG, "Registered with GCM Server successfully. RegID: " + regId);

            } else { 
                Toast.makeText(
                        applicationContext,
                        "Reg ID Creation Failed.\n\nEither you haven't enabled Internet or GCM server is busy right now. "
                        + "Make sure you enabled Internet and try registering again after some time."
                                + msg, Toast.LENGTH_LONG).show();
                Log.e(TAG, "Reg ID Creation Failed!!!");
            }
        }
    }.execute(null, null, null);
}
//在GCM服务器中注册设备的异步任务
私有无效注册表背景(){
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
字符串msg=“”;
InstanceID InstanceID=InstanceID.getInstance(applicationContext);
试一试{
regId=instanceID.getToken(GCM\u发送方\u ID,
GoogleCloudMessaging.INSTANCE_ID_SCOPE,null);
}捕获(IOE异常){
e、 printStackTrace();
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串msg){
如果(!TextUtils.isEmpty(regId)){
Toast.makeText(
应用上下文,
“已成功向GCM服务器注册。\n\n”
+味精,吐司。长度(短)。show();
Log.e(标记“已成功向GCM服务器注册”。RegID:+RegID);
}否则{
Toast.makeText(
应用上下文,
“注册表ID创建失败。\n\n您没有启用Internet或GCM服务器当前正忙。”
+“请确保已启用Internet,并在一段时间后再次尝试注册。”
+味精,吐司.长度(长).show();
Log.e(标记“注册ID创建失败!!!”;
}
}
}.执行(空,空,空);
}
我按照文档中的说明正确导入了
googleplay服务
库。()

有人遇到过这个错误吗?我如何解决这个问题

使用的开发环境:带ADT的Eclipse开普勒SR2

如果您需要其他信息,请发表评论。

我在android.support.v4.content.ContextCompat中看到了方法
getnobackfilesdir

似乎问题在于我在项目中包含了一个旧的appcompat-v7。使用
SDK管理器
下载最新版本的
Android支持库
,然后按照的步骤将库添加到您的应用程序项目中。

我遇到了以下错误:

java.lang.NoSuchMethodError: No static method getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; in class Lcom/google/android/gms/common/util/zzx; or its super classes (declaration of 'com.google.android.gms.common.util.zzx' appears in /data/data/com.crave.iapdemo/files/instant-run/dex/slice-com.google.android.gms-play-services-basement-10.0.1_b9da1447b99cc6cbc2fa601fb84d0418780bfa55-classes.dex)
                                                                       at com.google.android.gms.iid.zzd.zzeC(Unknown Source)
                                                                       at com.google.android.gms.iid.zzd.<init>(Unknown Source)
                                                                       at com.google.android.gms.iid.zzd.<init>(Unknown Source)
                                                                       at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
                                                                       at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
                                                                       at vodio.labs.crave.gcm.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:39)
我的解决方案是升级以下内容:

dependencies {
    // play services
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
}
进入:


类似的问题,我的libs目录中有一个过时的android-support-v4.jar;更新到新版本,问题已解决。@Kurt:你说得对。你应该将其作为答案发布。我遇到了同样的错误,由于你的回答,我发现我的应用程序build.gradle上有appcompat-v7和support-v4。删除support-v4成功了!
java.lang.NoSuchMethodError: No static method getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; in class Lcom/google/android/gms/common/util/zzx; or its super classes (declaration of 'com.google.android.gms.common.util.zzx' appears in /data/data/com.crave.iapdemo/files/instant-run/dex/slice-com.google.android.gms-play-services-basement-10.0.1_b9da1447b99cc6cbc2fa601fb84d0418780bfa55-classes.dex)
                                                                       at com.google.android.gms.iid.zzd.zzeC(Unknown Source)
                                                                       at com.google.android.gms.iid.zzd.<init>(Unknown Source)
                                                                       at com.google.android.gms.iid.zzd.<init>(Unknown Source)
                                                                       at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
                                                                       at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
                                                                       at vodio.labs.crave.gcm.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:39)
InstanceID.getInstance(this);
dependencies {
    // play services
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
}
dependencies {
    // play services
    compile 'com.google.android.gms:play-services-gcm:10.0.1'
    compile 'com.google.android.gms:play-services-analytics:10.0.1'
}