Android 中的小部件启用小部件设置按钮?

Enable Widget Setting button for widgets in Android?

Samsung One UI 当我 select 小部件时,主屏幕显示一些小部件的设置按钮,

但对某些人来说不是

想知道两者之间有什么区别,或者它只是 OEM 特定的功能,因为我根本无法在 POCO 启动器或模拟器的启动器中使用菜单。

请注意我已经在使用

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure=".WidgetConfigurationActivity"
    ...

在我的提供商中,在我的清单中

        <receiver ...>
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
        ...

然而这些只是我在添加一个widget时添加的配置,而不是在添加widget之后,在网上搜索也没有找到答案。

我知道这个问题已经几个月了,但我还是会回答。在对三星应用程序进行逆向工程后,我发现了“设置”按钮背后的秘密。

您只需将此元数据添加到您的应用小部件 (<receiver>):

<meta-data android:name="android.appwidget.provider.semConfigureActivity" android:value="com.example.MySettingsActivity" />

完整示例:

<receiver android:name="com.example.MyWidget">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
    </intent-filter>
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info"/>
    
    <!-- The secret sauce is here -->
    <meta-data android:name="android.appwidget.provider.semConfigureActivity" android:value="com.example.MySettings"/>
</receiver>

建议:建议学习逆向工程以实现未记录的功能(只要确保您应用的核心功能不依赖于未记录的 API)。

还要补充一下,在 Android 12 中,这最终已经标准化并提供了 android:widgetFeatures="reconfigurable" 或 (reconfigurable|configuration_optional),请参阅 https://developer.android.com/guide/topics/appwidgets/configuration#use-default 以获取来自 [= 的更多信息18=]12.

还可能值得注意,显然 reconfigurable 已为某些版本定义,只是在此版本中声明它为官方支持。