【问题标题】:Installing an android widget from Inside another app从另一个应用程序内部安装一个 android 小部件
【发布时间】:2012-03-08 20:42:38
【问题描述】:

我有一个功能齐全的 Android 小部件,它由服务提供者类、接收者类和其他一些资源组成。

我有一个单独的应用程序,我已成功将小部件的类和所需资源导入到该应用程序中。应用程序中有一个按钮菜单(编码为硬菜单按钮),我想在其中使用一个按钮来安装小部件。我不在乎小部件是否显示在主页上(我知道你不能从应用程序内部执行此操作)我只想安装小部件并成为主屏幕上“小部件”菜单上的一个选项。 我已经尝试从应用程序内部启动服务,我尝试向小部件发送更新,以便它会调用 .OnEnabled,我尝试实例化 java 类......我显然遗漏了一些东西,无法从android 文档。

我知道这是一个非常愚蠢的问题......

如何让 serviceProvider 运行和安装小部件? (以 WidgetServiceProvider.java 和 WidgetReceiver.java 为例)

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) 
    {        
         ...
    case R.id.installWidget: 
        ????????    
        break;
    }

【问题讨论】:

  • 您可能应该发布您的 AndroidManifest.xml 和相关的android.appwidget.provider XML 元数据。

标签: android android-widget android-service


【解决方案1】:

应用程序中有一个按钮菜单(编码为硬菜单按钮),我想使用其中的一个按钮来安装小部件。我不在乎小部件是否显示在主页上(我知道你不能从应用程序内部这样做)

这些句子对我来说真的没有意义。你说你想使用一个应用程序在主页上放置一个小部件..但然后说你知道你不能从应用程序内部做到这一点..

如果您询问如何让小部件自动安装在通过清单 xml 文件实现的小部件菜单中。

有关完整教程,您可以查看 here,但具体到您的问题,您只需要将这些标签的变体添加到清单 xml 文件中的应用程序标签。

<receiver android:name="[Package name]" android:label="[Your Label]">
  <intent-filter>
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
  </intent-filter>
  <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" />
</receiver>

标签链接:

【讨论】:

  • 你没有仔细阅读它,因为我并不自相矛盾。我的小部件不是“从清单自动安装”。我清楚地指出,我并没有尝试将小部件放在主页上,而只是安装了它。这没有帮助,并且不包含任何触发此“自动安装”的清单元素
  • 我根据您的评论更新了我的答案,提供了更多信息,但如果您的清单文件中已经包含此信息,那么您需要发布该文件以便我们对其进行调试。
  • 您编辑的答案对将来引用此内容的人更有帮助。我的实际问题是我的接收器和服务标签位于活动标签内。在清单中确保您的活动、接收器和服务类在清单中都是离散的(具有自己的意图过滤器),并且除了 标记之外,它们都没有嵌套在任何东西中。我会将其标记为答案,因为它向我指出了如何通过清单安装小部件,并且因为您花时间编辑了更多细节。
猜你喜欢
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多