Ich möchte eine Anwendung schreiben, die ausgelöst wird, wenn eine Kalendererinnerung auftritt. Ich weiß, dass es keine offiziell dokumentierte Möglichkeit gibt, dies zu tun, aber ich habe im Log gesehen, dass, wenn mein Kalenderalarm auf meinem Telefon (Droid X) ausgeht, AlertReceiver anzeigt, dass er eine android.intent.action.EVENT_REMINDER empfangen hat:Kann nicht empfangen android.intent.action.EVENT_REMINDER Broadcast
01-03 11:03:00.029 D 1523 AlertReceiver onReceive: a=android.intent.action.EVENT_REMINDER Intent { act=android.intent.action.EVENT_REMINDER dat=content://com.android.calendar/129407058000 flg=0x4 cmp=com.android.calendar/.AlertReceiver (has extras) }
So stelle ich eine einfache BroadcastReceiver up:
package com.eshayne.android;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class CalendarTest extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
android.util.Log.i("CalendarTest", "CalendarTest.onReceive called!");
}
}
mit diesem Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.eshayne.android"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.READ_CALENDAR" />
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<receiver android:name="com.eshayne.android.CalendarTest">
<intent-filter>
<action android:name="android.intent.action.EVENT_REMINDER" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
Leider, wenn ich das auf meinem Handy setzen und einrichten ein Kalenderereignis mit einer Erinnerung - wenn die Erinnerung warnt, sehe ich immer noch den AlertReceiver-Protokolleintrag, aber nicht meinen.
Ich habe auch hier über einige System Intents gelesen, die eine Registrierung über Code und nicht im Manifest erfordern. Also habe ich versucht, das folgende statt:
package com.eshayne.android;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
public class CalendarTestDisplay extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
android.util.Log.i("CalendarTestDisplay", "received broadcast");
}
},
new IntentFilter("android.intent.action.EVENT_REMINDER"));
}
}
mit diesem modifizierten Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.eshayne.android"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.READ_CALENDAR" />
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<activity android:name=".CalendarTestDisplay"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
ohne besseres Ergebnis.
Irgendwelche Ideen, was ich vermisse? Oder irgendwelche anderen Ideen, wie ich Kalenderalarme erfassen könnte?
Danke, Ethan
Oh, nun, war einen Versuch wert. Danke! – eshayne