gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:32:32 25 4
gpt4 key购买 nike

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

  • 点击按钮打开 Activity
  • 点击按钮打开 URL
  • 点击按钮时在主屏幕上 toast

感谢任何帮助,谢谢。

最佳答案

我已经成功完成了项目的这一部分。有两种情况

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

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

  1. 使用共享首选项
  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() 来传递值。这里最好不要使用共享首选项。

要在不启动应用程序的情况下传递值,您可以从小部件按钮调用服务,然后您可以在 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新手,我在我的项目中使用widget进行了很多研究,并且花了很多时间。因此考虑发布此内容,这将对像我这样的人有所帮助。如果您发现任何错误/错误,请纠正我。很高兴纠正我的错误。谢谢

关于java - 如何将值从主屏幕小部件传递到应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53532942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com