我正在尝试在启动后立即设置警报接收器。因此,我有一个应该注册警报的 OnBootReceiver。 onBootReceiver 工作并且被调用,但不知何故它找不到我的 AlarmReceiver 类。
开机后成功启动的OnBootReceiver:
public class OnBootReceiver extends BroadcastReceiver {
private static final String TAG = "OnBootReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "called");
Intent i = new Intent(context, com.packagenames.AlarmReceiver.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, 0);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 30);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), time.getTimeInMillis(), pi);
}
}
如您所见,它配置警报尝试调用 com.packagenames.AlarmReceiver.class。这个类存在并且位于同一个包中:
public class AlarmReceiver extends BroadcastReceiver {
private static final String TAG = "AlarmReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "alarm received");
Intent i = new Intent(context, com.packagename.DataService.class);
i.putExtra("action", "process");
context.startService(i);
}
}
不幸的是,我收到以下错误:
02-03 09:22:25.344: W/ActivityManager(103): Unable to start service Intent { flg=0x4 cmp=com.phonegap.packagename/.AlarmReceiver (has extras) }: not found
Android list 如下所示
<application>
// activities etc
<receiver
android:name="com.phonegap.packagename.OnBootReceiver"
android:enabled="true"
android:exported="false"
android:label="OnBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name="com.phonegap.packagename.AlarmReceiver"
android:enabled="true"
android:label="AlarmReceiver">
<intent-filter>
</intent-filter>
</receiver>
</application>
你发现错误了吗?也许我忘记了什么?
谢谢
编辑:在 list 中,我添加了
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
为了使 OnBootReceiver 工作。我需要类似的闹钟吗?
最佳答案
在创建待处理 Intent 时,您不应该使用 getBroadcast 而不是 getService 吗?
关于java - OnBootReceiver 可以工作,但找不到 AlarmReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125905/