【问题标题】:Alarm Clock from GIT - Gives error - Android来自 GIT 的闹钟 - 给出错误 - Android
【发布时间】:2013-08-14 15:08:24
【问题描述】:

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

https://github.com/android/platform_packages_apps_alarmclock

我修复了大部分问题,除了以下内容:

Alarms.java: 第 463 行:意图警报更改 = 新意图(意图.ACTION_ALARM_CHANGED); 错误:ACTION_ALARM_CHANGED 无法解析或不是字段。

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

我正在为 9 和 18 运行 minSDK。

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

谢谢!

【问题讨论】:

    标签: android android-alarms


    【解决方案1】:

    您下载的并不是真正的“示例”,而是系统应用程序的来源。因此,它可以访问您通常无法自己访问的 SDK 的某些部分,因为该应用程序是直接针对 Android 的源代码构建的。

    如果你查看Intent源代码,你会发现如下sn-p:

    /**
     * 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.jar 文件中的 android.content.Intent 存根版本中。

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

    另请参阅@CommonWare's answer on this matter,或Romain Guy's over at Google Groups

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

    【讨论】:

    • 我以为这是直接谷歌示例程序?测试闹钟示例程序的最佳解决方案是什么?
    • 如果您正在寻找示例项目和代码,请查看sample code that is bundled with the Android SDK。大多数系统应用程序并不意味着是“独立”应用程序,因为它们可能会绑定到不属于公共 SDK 的 Android 的某些部分。
    【解决方案2】:

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

    【讨论】:

    • Alarms.java 中没有任何与 android.R 相关的内容
    • 尝试使用ctrl + f搜索android.R;如果您在导入中发现类似的内容,请删除该行
    • 我在 Alarms.java 中没有看到任何与 android.R.. 相关的内容:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多