模拟器中的Android小部件

psy*_*tik 5 android android-widget android-emulator

我有一个现有的Android应用程序.我使用以下内容添加了一个简单的小部件:

  • 用一个<receiver>块来更新我的清单,该块提供有关我的AppWidgetProvider实现的信息
  • 在res/xml中添加了一个新的xml文件<appwidget-provider>,其中包含一个包含height/width/updatePeriod/initialLayout/icon/label属性的元素
  • 添加了一个带有a ImageView和a 的简单默认布局TextView
  • 实施我的 AppWidgetProvider

当我构建并将其部署到模拟器时,我的Widget不会显示在窗口小部件列表中.我错过了"安装"小部件的一些步骤吗?我是否需要做一些特殊的事情才能让它出现在模拟器中?

编辑:这是我的清单接收器的样子:

<receiver android:name=".MyAppWidgetProvider"
          android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
               android:resource="@xml/my_appwidget_info" />
</receiver>
Run Code Online (Sandbox Code Playgroud)

这是我的my_appwidget_info.xml的样子:

<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:icon="@drawable/ic_logo"
    android:label="MySampleApp"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="86400000"
    android:initialLayout="@layout/my_app_widget" >
</appwidget-provider>
Run Code Online (Sandbox Code Playgroud)

tin*_*nja 6

清单中的接收器标签是否具有正确的intent-filter和元数据?它应该看起来像文档中的示例:

<receiver android:name="MyAppWidgetProvider" >
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
               android:resource="@xml/my_appwidget_info" />
</receiver>
Run Code Online (Sandbox Code Playgroud)

接收器需要将这两个部分识别为app小部件.

编辑:<receiver>标签也需要位于<application>标签内.

  • 您的<receiver>标记需要位于<application>标记内.如果<receiver>在<application>之外,它不会抛出任何错误,但它根本不会识别<receiver>. (4认同)