Android 小部件未显示在屏幕上

Android widgets not showing on screen

我想做一个简单的 widget 但是当我想把它放在屏幕上时它就消失了。 我在 Api 上试过这个:23,26 和 30,它们都给我相同的结果。

Manifest.xml

<receiver android:name=".mAppWidgetProvider">

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

        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/widget_info"/>

    </receiver>

widget_info.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.app24.test.mAppWidgetProvider"
android:initialLayout="@layout/my_widget"
android:minWidth="250dp"
android:minHeight="70dp"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="10000"
android:widgetCategory="home_screen">
</appwidget-provider>

mAppWidgetProvider

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;

public class mAppWidgetProvider extends AppWidgetProvider {

}

my_widget(布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@color/white"
android:padding="8dp">

<TextView
    android:text="Hello world"
    android:textSize="24sp"
    android:layout_weight="1"
    android:gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

<Button
    android:text="Click me!"
    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

<Button
    android:text="Click me!"
    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</LinearLayout>

我已经尝试了其他解决方案,但没有任何效果。

查看 logcat 并寻找一些 Exception。应用程序小部件在没有任何对话框的情况下“无声地”崩溃,只是没有出现。但是你应该能够在日志中找到问题的原因

在你的代码中我看到一行错误:

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

android:configure should point on some Activity,这将在您的小部件添加到主屏幕时启动。你的线错误地指向你的自定义 AppWidgetProvider,这不是 Acticity - 系统可能会尝试将此 class 启动为 Activity 或者可能会检查 instanceof 和因为这个 class 不是 Activity 然后发生崩溃。尝试删除此行开始(或指向正确的 class)