Wear OS 并发症 setTapAction():无广播

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

我正在为复杂点击创建一个待处理的意图,如下所示:

    override fun onComplicationRequest(request: ComplicationRequest, listener: ComplicationRequestListener )  {

        class ComplicationBroadcastListener : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {
                Log.i(tag,"ComplicationBroadcastListener.onReceive()")
            }
        }

        val intent = Intent(this, ComplicationBroadcastListener::class.java)
        complicationPendingIntent = PendingIntent.getBroadcast(this, request.complicationInstanceId, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
        ...

我正在使用这样的复杂功能来注册它:

    private fun createComplicationData(value: Float, absString: String, sense: String) =
        RangedValueComplicationData.Builder(
           ...
        ).setTapAction(
            complicationPendingIntent
        ).build()

complicationPendingIntent
肯定在调用
setTapAction
之前被初始化,但是
onReceive
从未被调用。

我知道这段代码的结构很差;我只是想简化事情,以防

this
context
在不同的地方意味着不同的事情。

我的项目的其他一切都正常;例如,我可以得到按计划更新或收到新数据的复杂性。

我知道将数据暴露给 Wear OS 上的表盘复杂功能,我的代码最初就是基于此。我也无法让该存储库中的代码正常工作。

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

接收者需要在

AndroidManifest.xml
中声明。

就我而言,最终版本是:

<receiver android:name=".complication.ComplicationBroadcastListener" />
© www.soinside.com 2019 - 2024. All rights reserved.