Чтение выбранной опции удаленного ввода с носимого устройства kotlin Android

У меня есть приложение, которое расширяет поддержку носимых уведомлений. Он использует удаленный ввод для перечисления массива желаемых ответов.

Необходимо прослушивать действие щелчка на элементе удаленного ввода на носимом устройстве. Намерение зафиксировано в onNewIntent(intent: Intent?) похоже, не содержал требуемой информации.

      val intent = Intent(this, SplashActivity::class.java).apply {
        addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    }
val pendingIntent = PendingIntent.getActivity(
    this,
    Random.nextInt(), intent,
    PendingIntent.FLAG_UPDATE_CURRENT
)

val replyActionPendingIntent: PendingIntent

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    val intent = Intent(this, WearNotificationService::class.java)
    intent.action = WearNotificationService.ACTION_REPLY
    replyActionPendingIntent = PendingIntent.getService(this, 0, intent, 0)
} else {
    replyActionPendingIntent = pendingIntent
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val notificationChannel =
        NotificationChannel(CustomFirebaseMessagingService.CHANNEL_ID,
            CustomFirebaseMessagingService.CHANNEL_NAME,
            CustomFirebaseMessagingService.CHANNEL_IMPORTANCE_HIGH)
    val notificationManager =
        this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    notificationManager.createNotificationChannel(notificationChannel)

    val alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)

    val remoteInput = resources.getString(R.string.reply_label).let { replyLabel ->
        resources.getStringArray(R.array.reply_choices).let { replyChoices ->
            RemoteInput.Builder(WearNotificationService.ACTION_REPLY)
                .setLabel(replyLabel)
                .setChoices(replyChoices)
                .build()
        }
    }

    val action = NotificationCompat.Action.Builder(
        R.drawable.logo,
        getString(R.string.reply_label),
        pendingIntent
    )
        .addRemoteInput(remoteInput)
        .setAllowGeneratedReplies(false)
        .build()


    val notificationBuilder =  NotificationCompat.Builder(this,
        CustomFirebaseMessagingService.CHANNEL_ID)
        .setContentTitle(getString(R.string.app_name))
        .setContentText(body)
        .setAutoCancel(true)
        .setSmallIcon(R.mipmap.ic_launcher)
        .setContentIntent(replyActionPendingIntent)
        .setColorized(true)
        .setDefaults(NotificationCompat.DEFAULT_LIGHTS and NotificationCompat.DEFAULT_VIBRATE)
        .setSound(alarmSound, AudioManager.STREAM_MUSIC)
        .extend(NotificationCompat.WearableExtender().addAction(action))
    notificationManager.notify(0, notificationBuilder.build())
}

Также создан сервис для наблюдения за удаленным вводом

      class WearNotificationService : JobIntentService() {

    override fun onHandleWork(intent: Intent) {
        print(intent)
    }

    companion object {
        const val ACTION_REPLY = "com.example.android.wearable.wear.wearnotifications.handlers.action.REPLY"

        const val EXTRA_REPLY = "com.example.android.wearable.wear.wearnotifications.handlers.extra.REPLY"
    }
}

Также добавьте информацию в AndroidManifest

      <service android:name=".push_service.WearNotificationService" />

Но при ответе с носимого устройства не смог получить подробности действия. Образец на пульте дистанционного ввода в официальной документации , как представляется, в Java и koltin преобразование бросает предупреждение устаревания.

0 ответов