通知を毎秒更新するためにwhileループを使用しようとしています。ただし、2.3.3以下では、次のlogcatエラーでクラッシュします。
08-14 07:30:17.394: E/AndroidRuntime(501): FATAL EXCEPTION: main
08-14 07:30:17.394: E/AndroidRuntime(501):
android.app.RemoteServiceException: Bad notification for startForeground:
java.lang.IllegalArgumentException: contentIntent required:
pkg=com.package.name id=77
notification=Notification(vibrate=null,sound=null,defaults=0x4,flags=0x40)
問題は、Build.VERSIONをチェックしても、同じlogcatエラーでコードがクラッシュすることです。
if (isRunning) {
n.defaults = Notification.DEFAULT_LIGHTS;
while (!RecordTimerTask.isRunning && isRunning) {
long now = System.currentTimeMillis() - startTime;
n.setLatestEventInfo(getApplicationContext(), getResources()
.getString(R.string.notify_title),
getDurationBreakdown(now), null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
startForeground(FOREGROUND_ID, n);
else
notify.notify(ID, n);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.3.3以下を実行しているデバイスは、null通知インテントを好まないようです。私が理解していないのは、startForegroundが呼び出されないのに、なぜlogcatエラーが発生するのですか?