我对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,但我似乎无法弄清楚应该如何做到这一点。我一直在研究将活动绑定到服务,但我不确定这是否有任何帮助。这样做的正确方法是什么?
答案 0 :(得分:1)
根据我的理解,您可以使用ShaeredPreferences。创建“loggedin”之类的首选项,并在首次登录时将boolean
变量设置为true
。现在,您可以在点击“注销”时将其设置为false
{{1 }}。
启动Button
后,您可以在致电Activity
前查看SharedPreference
,如果值为setContentView()
,则true
finish()
并打开你的其他LoginActivity
。
我提供的文档链接提供了创建,打开和修改Activity
的好例子