我正在使用小部件升级我的应用。这不是我做过的第一个小部件。我总是遇到奇怪的问题,但最终小部件在列表中出现了。
这是我到目前为止所做的:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="110dp" android:minHeight="30dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/widget_layout" android:resizeMode="none"> </appwidget-provider>
<application>
部分添加了要显示的小部件(出于某种原因,无法在此处粘贴清单片段,它只是没有显示,请参阅代码here)仍然无法在小部件列表中找到小部件。我在真实设备上调试应用程序。我正在使用库项目,但是小部件文件,但我在项目中直接运行。这可能会发生什么?
答案 0 :(得分:28)
遇到类似的问题,这就是我发生的事情。在添加minResizeHeight之前,下面的Widget从未出现在Widget抽屉中。很奇怪,但可能是可调整大小的小部件所必需的。可能会更友好。
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/pmt_schedule_scroll_widget"
android:minHeight="146dip"
android:minResizeHeight="73dp"
android:minWidth="146dip"
android:resizeMode="vertical"
android:updatePeriodMillis="0" />
答案 1 :(得分:23)
这种问题可能发生在两种情况下。两者都在上面得到了回答,这是一个完整的答案,我已经面对这两个场景并解决了这两个问题。
如果应用程序指定android:installLocation =&#34; preferExternal&#34;清单中的参数,App将安装在外部存储器中,它不会显示在窗口小部件列表中。此外,如果您已经让手机在SD卡上安装了所有应用程序,也会发生这种情况。
转到设置 - &gt;应用 - &gt; YourApp 然后&#34;转到手机&#34;。这会将应用程序移动到手机内存中,现在您可以在小部件列表中看到小部件
如果上述修复程序无法解决您的问题,那么您可能拥有一个安装了android 4.X.X版本的设备。
然后你必须在widget_info.xml文件中至少设置以下参数
机器人:=了minHeight&#34; XXXdp&#34; 机器人:minWidth =&#34; XXXdp&#34;
答案 2 :(得分:9)
问题是android:installLocation="preferExternal"
如果应用程序安装在SD上,它会以某种方式导致小部件列表出现问题
答案 3 :(得分:7)
我尝试了所有可能的解决方案,没有任何对我有用...... 最后我解决了它。
就我而言,问题是过度思考:我认为在元数据标签中我们需要为提供者定义一个唯一的名称(例如:&#34; com.example.myprovider&#34; )以及链接到xml资源。
错:
Install
右:
<meta-data
android:name="com.example.myprovider"
android:resource="@xml/widget_info" />
答案 4 :(得分:5)
您需要在清单文件中注册BroadcastReceiver。例如:
<receiver
android:icon="@drawable/icon"
android:label="Example Widget"
android:name="MyWidgetProvider" >
<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>
我从http://www.vogella.com/articles/AndroidWidgets/article.html
借用了这段代码请参阅完整教程的链接
答案 5 :(得分:1)
经过几个小时的搜索并且未能解决之后,我决定打开一个小工具的示例项目,该项目工作并逐项比较以查看错误,最后,我解决了我的res /上添加了以下几行/ XML / widget_info.xml:
android:minHeight="XXXdp"
android:minResizeHeight="XXXdp"
android:minResizeWidth="XXXdp"
android:minWidth="XXXdp"
其中XXX是值。
答案 6 :(得分:1)
就我而言,问题出在接收器的意图过滤器中。
错误:
<intent-filter>
<action android:name="APPWIDGET_UPDATE" />
</intent-filter>
正确:
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
答案 7 :(得分:0)
在我的情况下,它是minWidth,它太大了,只是放了一个较小的dp,它的minHeight也太高了!