携帯電話を8.1 Developer Previewにアップグレードすると、バックグラウンドサービスが正しく起動しなくなりました。Android 8.1へのアップグレード後にstartForegroundが失敗する
長年実行しているサービスでは、作成時に呼び出される進行中の通知を開始するstartForegroundメソッドを実装しました。
@TargetApi(Build.VERSION_CODES.O)
private fun startForeground() {
// Safe call, handled by compat lib.
val notificationBuilder = NotificationCompat.Builder(this, DEFAULT_CHANNEL_ID)
val notification = notificationBuilder.setOngoing(true)
.setSmallIcon(R.drawable.ic_launcher_foreground)
.build()
startForeground(101, notification)
}
エラーメッセージ:サービス通知ため
11-28 11:47:53.349 24704-24704/$PACKAGE_NAMEE/AndroidRuntime: FATAL EXCEPTION: main
Process: $PACKAGE_NAME, PID: 24704
android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notification: Notification(channel=My channel pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x42 color=0x00000000 vis=PRIVATE)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1768)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
無効チャンネル、どうやら私の古いチャネルDEFAULT_CHANNEL_IDはもはや私が仮定API 27に対して適切ではありません。適切なチャンネルは何でしょうか?私は文書を見ようとしました
誰が 'val'ですか?... –
これはKotlinコードです。 https://kotlinlang.orgをチェックしてください。これは、急速に成長しています偉大な小さな言語です! –
@ ban-geoengineering他のコメントで述べたように。それは、Androidの正式にサポートされている言語の1つであるKotlinです。 – Rawa