2

我对 Android 相当陌生,目前正在开发一个简单的 XMPP 客户端。用户应该能够登录,并且应该在 XMPP 消息到达时收到通知。应该可以访问在当前会话期间到达的所有消息的概览。

启动应用程序时,会启动 LoginActivity,提示用户填写他或她的凭据。如果提供了正确的凭据,则会启动后台服务:

Intent intent = new Intent(this, NotificationService.class);
startService(intent);

启动时,通知服务会向 XMPP 连接添加一个数据包侦听器,并请求在前台运行。用户会收到由该前台请求引起的通知(“正在进行”)。现在我提供了第二个名为 XMPPClientActivity 的活动,显示了在会话期间收到的所有消息和一个简单的注销按钮。从“正在进行的”通知中打开应用程序时,将启动 XMPPClientActivity,因为通知定义如下:

xmppIntent = new Intent(this, XMPPClientActivity.class);
pendingIntent = PendingIntent.getActivity(this, 0, xmppIntent, 0);
NotificationCompat.Builder xmppBuilder = new NotificationCompat.Builder(this);
xmppBuilder.setContentIntent(pendingIntent);
// Notification details
startForeground(id, xmppBuilder.build());

但是,当从主屏幕打开应用程序时,LoginActivity 会再次打开。当然,我希望启动 XMPPActivity,但我似乎无法弄清楚应该如何完成。我一直在研究将活动绑定到服务,但我不确定这是否有任何帮助。这样做的正确方法是什么?

4

1 回答 1

1

据我了解,您可以做的是使用ShaeredPreferences。创建一个首选项,如“loggedin”,并将boolean变量设置为true他们第一次登录时。现在您可以将其设置为false当他们单击“logout”时Button

启动时,Activity您可以SharedPreference在调用之前检查setContentView(),如果值是然后true打开你的另一个。finish()LoginActivityActivity

我提供的文档链接有一个很好的创建、打开和编辑示例SharedPreferences

于 2013-07-31T15:53:11.097 回答