繁体   English   中英

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

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

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

  • 单击按钮打开活动
  • 单击按钮打开一个URL
  • 单击按钮在主屏幕上烤面包

感谢您的任何帮助,谢谢。

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

单击按钮时,发送董事会广播消息。 并且您的应用程序需要运行服务才能接收消息。 您可以在邮件中输入您的值吗?

希望此链接可以为您提供一些想法: http : //rxwen.blogspot.com/2012/10/communication-between-android-widget.html

还有一个类似的问题: Android-小部件及其应用之间的通信

祝好运!

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

  1. 当我们传递值时,将启动该应用程序。 那就是我们将值直接传递给活动
  2. 在不启动应用程序的情况下,我们可以传递值。在这里,我们正在使用服务

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

  1. 使用sharedpreferences
  2. 使用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新手,在我的项目中使用widget进行了很多研究,这花费了很多时间。 因此考虑发布此内容,这会对像我这样的人有所帮助。 如果发现任何错误/错误,请纠正我。很高兴纠正我的错误。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM