我正在为复杂点击创建一个待处理的意图,如下所示:
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 上的表盘复杂功能,我的代码最初就是基于此。我也无法让该存储库中的代码正常工作。
接收者需要在
AndroidManifest.xml
中声明。
就我而言,最终版本是:
<receiver android:name=".complication.ComplicationBroadcastListener" />