来自GIT的闹钟 - 给出错误 - Android

时间:2013-08-13 05:56:25

标签: android android-alarms

我从以下链接下载了闹钟示例:

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。

有人可以帮我解决这个问题吗?

谢谢!

2 个答案:

答案 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 matterRomain Guy's over at Google Groups

简而言之:你不能使用那个常数。您可以尝试使用其字符串值("android.intent.action.ALARM_CHANGED")替换它,但请记住,开发人员可能无法使用它。知道了,你根本不应该尝试使用它。

答案 1 :(得分:-1)

我认为这可能是进口问题。尝试检查您的类的导入。有时Eclipse会从android包中导入R.java类并停止使用你的。删除导入android.R

等导入