如何创建一个携带数据的android Intent?

2024-04-17

我可能误解了意图的使用方式,所以我可能在这里问了错误的问题。如果是这样的话,无论如何请帮助我走上正确的轨道......

我刚刚开始开发一个 Android 应用程序,它会经常轮询我的服务器以获取消息,当有新消息可用时,我想将其显示给用户。我正在尝试通过有一个来实现这个Service轮询服务器,当收到新消息时,服务应将该消息发送给Activity这表明了这一点。

为了促进这种沟通,我正在尝试创建一个Intent with ACTION_VIEW,但我不知道如何将消息传递给活动。有没有办法通过 Intent 传递字符串或常规 Java 对象?

对于它的价值,这就是我想做的:

getApplication().startActivity(new Intent(MessageService.this, ViewMessageActivity.class, message));

但当然,这甚至无法编译。


使用 Intent 包添加额外信息,如下所示:

Intent i = new Intent(MessageService.this, ViewMessageActivity.class);
i.putExtra("name", "value");

在接收方:

String extra = i.getStringExtra("name");

或者,将所有额外内容作为一个捆绑包获取,与类型无关:

Bundle b = i.getExtras();

有各种不同的签名putExtra()方法以及根据数据类型获取数据的各种方法。您可以在这里查看更多内容:Intent http://developer.android.com/reference/android/content/Intent.html, putExtra http://developer.android.com/reference/android/content/Intent.html#putExtra%28java.lang.String,%20double%5B%5D%29.

EDIT:要传递一个对象,它必须实现可分包 http://developer.android.com/reference/android/os/Parcelable.html or 可串行化 http://developer.android.com/reference/java/io/Serializable.html,因此您可以使用以下签名之一:

putExtra(字符串名称,可序列化值) http://developer.android.com/reference/android/content/Intent.html#putExtra%28java.lang.String,%20java.io.Serializable%29

putExtra(字符串名称,可打包值) http://developer.android.com/reference/android/content/Intent.html#putExtra%28java.lang.String,%20android.os.Parcelable%29

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建一个携带数据的android Intent? 的相关文章

随机推荐