Android Wigets 不能使用自定义 DefaultHttpClient

Posted

技术标签:

【中文标题】Android Wigets 不能使用自定义 DefaultHttpClient【英文标题】:Android Wigets can't use custom DefaultHttpClient 【发布时间】:2012-10-09 19:33:49 【问题描述】:

标题有点混乱,因为我不知道什么是合适的命名方式。我刚开始学习小部件编程,大致了解了如何制作一个简单的小部件。现在我想在我的实际应用程序中使用它来做一些事情:

    使用 IP 地址 ping Web 服务器(检查每个服务器的活跃度) Web 服务器需要证书身份验证

实际的应用程序已经可以正常工作了,我只想为我正在 ping 的 1 个服务器做一个小部件。我使用了一个自定义的 DefaultHttpClient,MyHttpClient 类,它完成了我所有的证书身份验证。我如何使用这个,MyHttpClient 类是通过键入

DefaultHttpClient client = new MyHttpClient(getApplicationContext());

只有当我将它放在 Activity 类中时它才有效。它在 AppWidgetProvider 类中不起作用。它给出的错误是:

该类型的方法 getApplicationContext() 未定义 SystemWidget.ParseLoyalty SystemWidget.java

【问题讨论】:

小部件基本上是广播接收器。他们在参数中接收上下文。但如果你需要从那里访问互联网,你最好启动一项服务。 【参考方案1】:

小部件基本上只是一个视图,仅此而已,因此它不能从任何东西请求数据。如果您想更新小部件呈现的数据,您可以使用服务来执行 httprequest。然后,您可以通过广播您自己的操作意图并在 AppWidgetProvider 的 onRecieve 中处理它来向小部件发送数据,或者您可以直接更新小部件。

当然,如果您的活动处于活动状态,它也可以更新小部件。

在此处查看更多信息: https://developer.android.com/guide/topics/appwidgets/index.html

服务与小部件不同。这是一段不同的代码,您可以执行它来执行一些操作。执行服务后,您可以使用检索到的数据来更新您的小部件,如我上面的回答中所述。这是一个关于android服务的教程:

https://developer.android.com/guide/components/services.html

如果您想直接从您的活动中更新您的小部件,还可以查看此线程: Programmatically update widget from activity/service/receiver

【讨论】:

啊,谢谢你的回复。当你说使用服务来做httprequest时,我需要扩展它吗?由于我已经扩展了 AppWidgetProvider,我还可以在代码中的某处扩展 Service 吗?我以前从未尝试过,并想在测试之前澄清一下。

以上是关于Android Wigets 不能使用自定义 DefaultHttpClient的主要内容,如果未能解决你的问题,请参考以下文章

Android 开源简单控件

Android Date Picker Fragment 不能设置为自定义日期

Android如何自定义Menu

android自定义对话框宽不能占满父layout的解决办法都有哪些

ITMS-90626:无效的 Siri 支持 - 自定义意图的本地化标题:找不到区域设置的“配置”:de_DE

Android中的自定义视图控件