开发完成后,Android小部件不在列表中

我使用小部件升级我的应用程序。 这不是我做的第一个小工具。 我总是遇到一些奇怪的问题,但是最终这个小部件在名单上一晃而过。

这是我迄今为止所做的:

  • 创build了widget_layout.xml
  • 创build了widget_info.xml
<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> 
  • 创build了WidgetProvider类
  • <application>部分添加了要显示的小部件(出于某种原因,不能在这里粘贴清单片段,它只是不显示,请参阅此处的代码)

但是,在小部件列表上找不到小部件。 我正在真实设备上debugging应用程序。 我正在使用库项目,但小部件文件,但所有在我直接运行的项目。 这里会发生什么?

  • 如何在EditText中为Android设置焦点到文本右侧?
  • 与ListView的Android小部件不会加载项目correclty
  • 如何在Facebook等app图标上显示通知计数?
  • 如何禁用Widget updatePeriodMillis?
  • 强制Android小部件进行更新
  • “...必须提供layout_height ...”,但它在我的风格资源?
  • 如何将图像保存到SD卡上button点击android
  • 如何在Android中制作工具栏(如辅助操作栏)?
  • 跑遍了类似的问题,这就是发生在我身上的事情。 下面的Widget从未出现在Widget抽屉中,直到添加了minResizeHeight。 奇怪,但可能是可resize的小部件所必需的。 本来可以更友善些。

     <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" /> 

    这种问题可能发生在两种情况下。 两者都在上面回答,这是一个完整的答案,我已经面临两种情况,并解决了他们两个。

    Scenario1

    如果应用程序在清单中指定了android:installLocation =“preferExternal”参数,则应用程序将安装在外部存储器中,并且不会显示在窗口小部件列表中。 另外,如果你已经让你的手机安装在SD卡上的所有应用程序,这也会发生。

    进入设置 – > Apps-> YourApp然后“移动到手机”。 这将移动应用程序到您的手机内存,现在你可以看到你的部件列表中的小部件

    Scenario2

    如果上述修复程序没有解决您的问题,那么你可能有一个Android 4.XX版本的设备。

    那么你必须至less在widget_info.xml文件中设置下面的参数

    溶液2

    android:minHeight =“XXXdp”android:minWidth =“XXXdp”

    问题是android:installLocation="preferExternal"

    如果应用程序安装在SD上,它会以某种方式导致部件列表出现问题

    您需要在清单文件中注册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借了这段代&#x7801;

    查看完整教程的链接

    我尝试了所有可能的解决scheme,没有为我工作…最后我解决了它。

    在我的情况下,问题是overshinking:我相信,在元数据标签中,我们需要为提供者定义一个唯一的名称(例如:“com.example.myprovider”)以及链接到xml资源。

    错误:

     <meta-data android:name="com.example.myprovider" android:resource="@xml/widget_info" /> 

    对:

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

    经过几个小时的search和解决,我决定打开一个小工具的示例项目,并逐项比较,看看有什么错,最后,我解决了在我的res / xml / widget_info .XML:

     android:minHeight="XXXdp" android:minResizeHeight="XXXdp" android:minResizeWidth="XXXdp" android:minWidth="XXXdp" 

    其中XXX是一些价值。