You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AndroidX中ComplicationManager依赖错误及应用启动实现求助

解决方案

1. 修正依赖声明

将应用级build.gradle中的依赖替换为Complication数据源专用的AndroidX库:

dependencies {
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // 建议使用最新稳定版本
    // 保留其他原有依赖
}

2. 替换旧版导入语句

将代码中基于Support库的导入全部替换为AndroidX对应包:

// 替换前
import android.support.wearable.complications.ComplicationManager
import android.support.wearable.complications.ComplicationProviderService
import android.support.wearable.complications.ComplicationData

// 替换后
import androidx.wear.watchface.complications.datasource.ComplicationProviderService
import androidx.wear.watchface.complications.data.ComplicationManager
import androidx.wear.watchface.complications.data.ComplicationData
import androidx.wear.watchface.complications.data.ComplicationData.Companion.TYPE_LAUNCH_APP

3. 调整常量引用方式

AndroidX中TYPE_LAUNCH_APP属于ComplicationData的伴生对象常量,需修正代码中的引用:
将ComplicationData.TYPE_LAUNCH_APP改为TYPE_LAUNCH_APP(已通过静态导入),或直接写ComplicationData.Companion.TYPE_LAUNCH_APP。

4. 验证Manifest服务配置

确保AndroidManifest.xml中正确声明Complication服务:

<service
    android:name=".AppLauncherComplicationProviderService"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.wear.watchface.complications.datasource.action.COMPLICATION_UPDATE_REQUEST" />
    </intent-filter>
    <meta-data
        android:name="androidx.wear.watchface.complications.datasource.SUPPORTED_TYPES"
        android:value="4" /> <!-- TYPE_LAUNCH_APP的数值为4 -->
</service>

最终修正后的代码片段

import android.content.ComponentName
import android.content.Intent
import android.util.Log
import androidx.wear.watchface.complications.data.ComplicationData
import androidx.wear.watchface.complications.data.ComplicationManager
import androidx.wear.watchface.complications.data.ComplicationData.Companion.TYPE_LAUNCH_APP
import androidx.wear.watchface.complications.datasource.ComplicationProviderService
import android.app.PendingIntent
import android.graphics.drawable.Icon

class AppLauncherComplicationProviderService : ComplicationProviderService() {
    private val TAG = "AppLauncherComplication"

    override fun onComplicationActivated(
        complicationId: Int,
        type: Int,
        watchFaceComponent: ComponentName
    ) {
        Log.d(TAG, "onComplicationActivated(): $complicationId, type: $type, component: $watchFaceComponent")
    }

    override fun onComplicationDeactivated(complicationId: Int) {
        Log.d(TAG, "onComplicationDeactivated(): $complicationId")
    }

    override fun onComplicationUpdate(
        complicationId: Int,
        dataType: Int,
        complicationManager: ComplicationManager
    ) {
        Log.d(TAG, "onComplicationUpdate(): $complicationId, type: $dataType")

        if (dataType == TYPE_LAUNCH_APP) {
            val launchIntent = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_LAUNCHER)
                .setComponent(ComponentName(
                    "com.example.my_target_app",
                    "com.example.my_target_app.MainActivity"
                ))
                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)

            val tapAction = PendingIntent.getActivity(
                this,
                0,
                launchIntent,
                PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
            )

            val complicationData = ComplicationData.Builder(TYPE_LAUNCH_APP)
                .setIcon(
                    Icon.createWithResource(
                        this,
                        R.drawable.ic_app_launcher
                    )
                )
                .setShortTitle(getString(R.string.app_name_launcher))
                .setTapAction(tapAction)
                .build()

            complicationManager.updateComplicationData(complicationId, complicationData)

        } else {
            complicationManager.noUpdateRequired(complicationId)
        }
    }
}

内容的提问来源于stack exchange,提问作者John Poust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:15:56