Tôi muốn viết một ứng dụng được kích hoạt khi lời nhắc lịch diễn ra. Tôi nhận ra không có cách nào chính thức được làm tài liệu này, nhưng tôi đã thấy trong nhật ký rằng khi báo thức lịch của tôi tắt trên điện thoại của tôi (Droid X), AlertReceiver cho biết rằng nó đã nhận được android.intent.action.EVENT_REMINDER:Không thể nhận android.intent.action.EVENT_REMINDER phát sóng
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) }
Vì vậy, tôi thiết lập một BroadcastReceiver đơn giản:
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!");
}
}
với biểu hiện này:
<?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>
Thật không may, khi tôi đặt này trên điện thoại của tôi và thiết lập một sự kiện lịch với lời nhắc - khi lời nhắc nhở cảnh báo, tôi vẫn thấy mục nhập nhật ký AlertReceiver, nhưng không phải của tôi.
Tôi cũng đã đọc ở đây về một số ý định hệ thống yêu cầu đăng ký qua mã thay vì trong tệp kê khai. Vì vậy, tôi đã cố gắng sau thay vì:
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"));
}
}
với biểu hiện biến đổi này:
<?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>
không có kết quả tốt hơn.
Bất kỳ ý tưởng nào tôi có thể bị thiếu? Hoặc bất kỳ ý tưởng nào khác về cách tôi có thể nắm bắt các sự cố báo thức lịch?
Cảm ơn, Ethan
Ồ, tốt, đáng để chụp. Cảm ơn! – eshayne