如何将值从主屏幕小部件传递给应用程序?

Posted

技术标签:

【中文标题】如何将值从主屏幕小部件传递给应用程序?【英文标题】:How to pass a value from home screen widget to the application? 【发布时间】:2019-05-01 03:46:52 【问题描述】:

我正在处理一个要为其创建小部件的 android 项目。使用这个小部件,我必须控制控件的一些操作(即通过按下小部件的停止按钮,应用程序应该停止某些操作的工作)。为此,我必须通过单击按钮从小部件向应用程序传递一些值。到目前为止,我能够做到以下几点:

点击按钮打开活动 点击按钮打开 URL 点击按钮在主屏幕上祝酒

感谢任何帮助,谢谢。

【问题讨论】:

【参考方案1】:

我已经成功完成了我项目的这一部分。有两个场景

    当我们传递值时,应用程序将被启动。也就是说,我们将值直接传递给活动 无需启动应用程序,我们就可以传递值。这里我们使用的是服务

在这两种情况下我们可以使用两种方法

    使用sharedpreferences 使用Intent(putExtra())

如果您想将值直接传递给活动(传递值时将启动应用程序),您可以使用上面提到的第二种方法并调用活动(您要启动的活动)如下:

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
    Intent intent = new Intent(context,MainActivity.class);
    PendingIntent pendingIntent = PendingIntent(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.PunchIn, pendingIntent);
    appWidgetManager.updateAppWidget(appWidgetId, views);

此代码从小部件按钮单击启动 MainActivity。在 Inten 中,您可以使用 putExtra() 来传递值。最好不要在这里使用 sharedpreference。

为了在不启动应用程序的情况下传递值,您可以从小部件按钮调用服务,然后您可以在service.class 文件中添加您想要添加的任何代码。您可以按如下方式调用该服务:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
Intent intent = new Intent(context,MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.PunchIn, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);

从此服务类中,您可以使用SharedPrefernceputExtra() 将值传递给应用程序。

如果您想制作一个与应用程序的按钮单击相同的按钮小部件,您可以使用第二种方法。在这里,您可以如上所述在按钮单击时调用服务,然后在服务类中编写按钮单击的代码。

我是 android 新手,我在我的项目中使用小部件进行了很多研究,并且花了很多时间。所以想张贴这将帮助像我这样的人。如果您发现任何错误/错误,请纠正我。很高兴纠正我的错误。 谢谢

【讨论】:

【参考方案2】:

我不确定这个问题,因为我还没有尝试小部件。

单击按钮时,发送广播消息。您的应用需要运行服务来接收消息。你可以把你的价值观写在信息里吗?

希望这个链接能给你一些想法: http://rxwen.blogspot.com/2012/10/communication-between-android-widget.html

有一个类似的问题:Android - Communications between a widget and its app

祝你好运!

【讨论】:

以上是关于如何将值从主屏幕小部件传递给应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何将值从 streamprovider / listview builder 传递给另一个类

如何将值从主传递到对话框

将值从主窗体传递到子窗体

单击时如何将按钮值从自定义小部件传递到 tkinter 中的主应用程序

将值从灯箱传递给父级

如何将值从python传递给c++并返回?