我从以下链接下载了闹钟示例:
https://github.com/android/platform_packages_apps_alarmclock
除了以下内容,我修复了大部分内容:
Alarms.java: 第463行:Intent alarmChanged = new Intent(Intent.ACTION_ALARM_CHANGED); 错误:无法解析ACTION_ALARM_CHANGED或不是字段。
无法解决此问题。搜索了大部分SO和Google群组。没有完美的解决方案。
我正在运行minSDK 9和目标18。
有人可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:6)
您下载的内容并非真正的“示例”,而是系统应用程序的来源。因此,它可以访问您自己通常无法访问的SDK的某些部分,因为该应用程序直接针对Android的源代码构建。
如果查看Intent
源代码,您会找到以下代码段:
/**
* Alarm Changed Action: This is broadcast when the AlarmClock
* application's alarm is set or unset. It is used by the
* AlarmClock application and the StatusBar service.
* @hide
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_ALARM_CHANGED = "android.intent.action.ALARM_CHANGED";
注意Javadoc最后一行的@hide
注释。这表明常量不是公共Android SDK的一部分。创建Android SDK的构建过程的一部分不会在您正在编译的android.content.Intent
文件的android.jar
存根版本中包含此成员。
@hide
注释用于内部目的需要公开或受保护但不被认为是SDK开发人员应该使用的内容。
另请参阅@CommonWare's answer on this matter或Romain Guy's over at Google Groups。
简而言之:你不能使用那个常数。您可以尝试使用其字符串值("android.intent.action.ALARM_CHANGED"
)替换它,但请记住,开发人员可能无法使用它。知道了,你根本不应该尝试使用它。
答案 1 :(得分:-1)
我认为这可能是进口问题。尝试检查您的类的导入。有时Eclipse会从android包中导入R.java类并停止使用你的。删除导入android.R
等导入