WakefulBroadcastReceiver无法解析为某种类型

Gee*_*eek 18 java android

我的项目显示错误消息WakefulBroadcastReceiver cannot be resolved to a type.我抬头看看我能想到的所有可能的原因.我已android-support-librarygoogle play services的路径.即使我的mapView工作(如果我在代码下面注释),这意味着google play service正确地添加到项目中.

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // Explicitly specify that GcmIntentService will handle the intent.
        ComponentName comp = new ComponentName(context.getPackageName(),
            GcmIntentService.class.getName());
        // Start the service, keeping the device awake while it is launching.
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
}
Run Code Online (Sandbox Code Playgroud)

知道为什么会出错吗?

med*_*eda 43

我今天遇到这个问题就是我如何修复它:

这是由于Android支持JAR没有像SDK管理器那样更新.您可以从libs文件夹中删除它,然后执行以下操作:

  1. 右键单击项目
  2. 转到Android工具
  3. 添加支持库

这是截图 在此输入图像描述

然后回到你的班级点击Ctrl+ Shift+O

它将导入您丢失的库:

import android.support.v4.content.WakefulBroadcastReceiver;
Run Code Online (Sandbox Code Playgroud)

Project > Clean 和Voilà!!


Com*_*are 23

确保您已将最新的Android支持包添加到项目中.例如,这个示例项目有一个合适的android-support-v4.jar并演示使用WakefulBroadcastReceiver.

  • Android Studio:在`dependencies`中添加build.gradle这一行:`compile'c​​om.android.support:support-v4:19.0.0'`(在确保使用Android SDK Manager安装Android支持库之前) (6认同)
  • @TobiasLindberg:这表明你有一个较旧的JAR,从之前的'WakefulBroadcastReceiver`开始. (3认同)
  • @Akash:进入SDK Manager,确保将最新的JAR下载到SDK安装中,然后确保项目中的JAR与SDK安装中的JAR相匹配.R18支持包有一个文件大小为556198字节的JAR和一个ed257a47cae11af1a55614055b879947的`md5sum`.这与我在我的答案中链接到的示例项目的GitHub仓库中的JAR相同.您还可以通过ZIP实用程序检查JAR的内容,看它是否包含`WakefulBroadcastReceiver`. (3认同)
  • 只是添加到@Laguiz注释:您现在可以用20.0.0替换19.0.0,因为有一个新版本的支持库. (2认同)

Saq*_*qib 7

这是因为android-support-v4.jar文件,请确保您拥有最新的.如果你认为你在项目中拥有它只是做一个技巧.在另一个项目中查找相同的文件,比如用最新的SDK创建新项目.将它的jar文件复制到此项目中并替换旧项目.现在导入import android.support.v4.content.WakefulBroadcastReceiver;并看到它工作..