1

以下のリンクから目覚まし時計の例をダウンロードしました。

https://github.com/android/platform_packages_apps_alarmclock

以下を除くほとんどを修正しました。

Alarms.java: 463 行目: Intent alarmChanged = new Intent(Intent.ACTION_ALARM_CHANGED); エラー: ACTION_ALARM_CHANGED は解決できないか、フィールドではありません。

これを修正できません。SOとGoogleグループのほとんどを検索しました。完璧な解決策はありません。

9 の minSDK と 18 のターゲットを実行しています。

誰かがこれを修正するのを手伝ってくれますか?

ありがとう!

4

2 に答える 2

6

ダウンロードしたものは実際には「例」ではなく、システム アプリケーションのソースです。そのため、アプリは Android のソース コードに対して直接ビルドされるため、通常はアクセスできない SDK の特定の部分にアクセスできます。

ソースコードを見ると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.Intentのファイルにある のスタブ エディションにこのメンバーは含まれません。android.jar

注釈は、@hide内部目的で公開または保護する必要があるものに使用されますが、SDK 開発者が使用する必要があるものとは見なされません。

また、この問題に関する @CommonWare の回答、またはGoogle グループの Romain Guy の回答も参照してください。

つまり、その定数は使用できません。文字列値 ( ) に置き換えてみることもでき"android.intent.action.ALARM_CHANGED"ますが、開発者が利用できないのにはおそらく十分な理由があることを覚えておいてください。それを知っているので、それをまったく使用しようとしないでください。

于 2013-08-13T07:30:28.610 に答える