我正在处理一个 Android 项目,我想为其创建一个小部件。使用这个小部件,我必须控制控件的某些操作(即通过按小部件中的停止按钮,应用程序应该停止某些操作的工作)。为此,我必须在单击按钮时将一些值从小部件传递给应用程序。到目前为止,我能够执行以下操作:
- 点击按钮打开 Activity
- 点击按钮打开 URL
- 点击按钮时在主屏幕上 toast
感谢任何帮助,谢谢。
最佳答案
我已经成功完成了项目的这一部分。有两种情况
- 当我们传递值时,应用程序将启动。也就是说,我们将值直接传递给 Activity
- 无需启动应用程序,我们就可以传递值。这里我们使用服务
在这两种情况下我们可以使用两种方法
- 使用
共享首选项
- 使用
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);
在此服务类中,您可以使用 SharedPrefernce
或 putExtra()
将值传递给应用程序。
如果您想制作一个与应用程序的按钮单击相同的按钮小部件,您可以使用第二种方法。这里你可以像上面提到的那样在按钮点击时调用一个服务,然后在服务类中编写按钮点击的代码。
我是android新手,我在我的项目中使用widget进行了很多研究,并且花了很多时间。因此考虑发布此内容,这将对像我这样的人有所帮助。如果您发现任何错误/错误,请纠正我。很高兴纠正我的错误。 谢谢
关于java - 如何将值从主屏幕小部件传递到应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53532942/