我阅读了hellowidget教程和开发指南’App Widgets.然后我知道如何创建一个包含按钮或文本或其他东西的小部件.
但我真正想做的是让它与我的应用程序进行交互.例如,我想创建一个具有文本视图的窗口小部件,当我单击它时,它会向我的活动发送一个PendingIntent,我可以在其中编辑文本.
我可以执行“发送PendingIntent”步骤.但是在我在acitivy中编辑文本后,小部件如何读取它?
解决方法
您需要做的是注册自定义意图,例如appwidgetprovider中的ACTION_TEXT_CHANGED,例如:
public static final String ACTION_TEXT_CHANGED = "yourpackage.TEXT_CHANGED";
在此之后,您需要在您的AndroidManifest.xml中注册您想要在接收器标签的intent-filter部分中接收此意图,如下所示:
<receiver android:name=".DrinkWaterappwidgetprovider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> <action android:name="yourpackage.TEXT_CHANGED" /> </intent-filter> <Meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" /> </receiver>
然后你必须在appwidgetprovider中扩展onReceive方法,并确保你正在处理你的意图:
@Override public void onReceive(Context context,Intent intent) { super.onReceive(context,intent); if (intent.getAction().equals(ACTION_TEXT_CHANGED)) { // handle intent here String s = intent.getStringExtra("NewString"); } }
完成上述所有操作后,您只需在文本更改后广播您的活动中的意图,如下所示:
Intent intent = new Intent(Yourappwidgetprovider.ACTION_TEXT_CHANGED); intent.putExtra("NewString",textView.getText().toString()); getApplicationContext().sendbroadcast(intent);
其中“NewString”应更改为您给出字符串的名称.
我希望它有所帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。