1

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

https://github.com/android/platform_packages_apps_alarmclock

我修复了除以下内容之外的大部分内容:

Alarms.java:第 463 行:意图 alarmChanged = new Intent(Intent.ACTION_ALARM_CHANGED); 错误:ACTION_ALARM_CHANGED 无法解析或不是字段。

无法解决此问题。搜索了大部分 SO 和 Google 组。没有完美的解决方案。

我正在为 9 和 18 的目标运行 minSDK。

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

谢谢!

4

2 回答 2

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";

请注意@hideJavadoc 最后一行的注释。这表明该常量不是公共 Android SDK 的一部分。创建 Android SDK 的构建过程部分不会将此成员包含在您正在编译android.content.Intentandroid.jar文件中的存根版本中。

注释用于出于内部@hide目的需要公开或受保护但不被视为 SDK 开发人员应该使用的东西。

另请参阅@CommonWare 对此事的回答,或Romain Guy 在 Google Groups上的回答。

简而言之:你不能使用那个常量。您可以尝试将其替换为其字符串值 ( "android.intent.action.ALARM_CHANGED"),但请记住,开发人员无法使用它可能是有充分理由的。知道这一点,你真的不应该尝试使用它。

于 2013-08-13T07:30:28.610 回答
-1

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

于 2013-08-13T06:01:27.737 回答