Wear OS 并发症 .setTapAction 用于调用活动

问题描述 投票:0回答:1

我试图将我的并发症的 setTapAction 来调用该活动,但每当我点击它时它都不起作用,它不会执行任何操作,只是产生连锁反应。我的代码如下

` CustomComplication 类:SuspendingComplicationDataSourceService() {

// Retrieves your data, in this case, we grab an incrementing number from Datastore.
val prefs = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE)
val tempF = prefs.getString("tempF", "") //"No name defined" is the default value.

val intent = Intent(this, MainActivity::class.java).apply {
    component = ComponentName(this@CustomComplication, MainActivity::class.java)
}
val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)


override fun getPreviewData(type: ComplicationType): ComplicationData? {
    if (type != ComplicationType.SHORT_TEXT) {
        return null
    }
    return createComplicationData(tempF.toString(), "Monday")
}


override suspend fun onComplicationRequest(request: ComplicationRequest): ComplicationData? {

    Log.d("BABT", "onComplicationRequest() id: ${request.complicationInstanceId}")



    return when (request.complicationType) {

        ComplicationType.SHORT_TEXT -> ShortTextComplicationData.Builder(
            text = PlainComplicationText.Builder(text = tempF.toString()).build(),
            contentDescription = PlainComplicationText
                .Builder(text = "Short Text version of Number.").build(),
      ).setMonochromaticImage(
       MonochromaticImage.Builder(
                    image = Icon.createWithResource(this, R.drawable.iconforbody),
                ).build(),
            )

           .setTapAction(pendingIntent)
            .build()

        else -> {
            if (Log.isLoggable("BABT", Log.WARN)) {
                Log.w("BABT", "Unexpected complication type ${request.complicationType}")
            }
            null
        }

    }


}

private fun createComplicationData(text: String, contentDescription: String) =
    ShortTextComplicationData.Builder(
        text = PlainComplicationText.Builder(text).build(),
        contentDescription = PlainComplicationText.Builder(contentDescription).build()
    ).build()

}`

我尝试了上面的代码,但它不起作用

android kotlin wear-os
1个回答
0
投票

从 Android 12 开始,您必须使用

PendingIntent#FLAG_IMMUTABLE
:

val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
© www.soinside.com 2019 - 2024. All rights reserved.