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

How to pass a value from home screen widget to the application?

我正在处理一个 android 项目,我想为其创建一个小部件。使用此小部件,我必须控制控件的某些操作(即通过按下小部件中的停止按钮,应用程序应停止执行某些操作)。为此,我必须在单击按钮时将一些值从小部件传递给应用程序。到目前为止,我能够执行以下操作:

感谢任何帮助,谢谢。

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

单击按钮时,发送一条广播消息。并且您的应用需要 运行 服务来接收消息。您可以在消息中加入您的价值观吗?

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

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

祝你好运!

我已经顺利完成了这部分我的project.There是两个场景

  1. 当我们传递值时,应用程序将启动。也就是说,我们将值直接传递给 activity
  2. 在不启动应用程序的情况下,我们可以通过 values.Here 我们正在使用的服务

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

  1. 使用sharedpreferences
  2. 使用Intent(putExtra())

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

    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() 传递 values.better 以在此处不使用 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);

通过此服务 class,您可以使用 SharedPrefernceputExtra() 将值传递给应用程序。

如果你想制作一个按钮小部件,它的工作方式与应用程序的按钮点击相同,你可以使用第二种方法。这里可以调用上面提到的按钮点击服务,然后在服务中编写按钮点击的代码class.

我是 android 的新手,我在我的项目中使用小部件进行了很多研究并且花了很多时间。所以想过发布这个对像我这样的人有帮助的人。如果您发现任何 error/mistake 请更正 me.happy 以纠正我的错误。 谢谢