2013-07-31 4 views
2

Я довольно новичок в Android, и в настоящее время я работаю над простым клиентом XMPP. Пользователь должен иметь возможность войти в систему и получать уведомления о появлении сообщения XMPP. Должно быть возможно получить доступ к обзору всех сообщений, поступивших в течение текущего сеанса.Как определить начальную активность при перезагрузке приложения Android?

При запуске приложения запускается функция 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

хотите ли вы их только когда-либо войти в один раз, если они не нажмите кнопку «Выход»? – codeMagic

+0

Вы всегда можете запустить приложение на целевую страницу. Там, в вашем onCreate, проверьте, если вы уже вошли в систему (возможно, некоторое значение в памяти), а если нет, startActivity активирует активность входа (и завершает работу целевой страницы). После входа в систему установите значение in-memory и startActivity для активности целевой страницы. – dkneller

ответ

1

Что вы можете сделать, как я понимаю, вы используете ShaeredPreferences. Создайте предпочтение как «loggedin» и установите переменную boolean в true при первом входе в систему. Теперь вы можете установить это на false, когда они нажимают «logout» Button.

Когда Activity запускается вы можете проверить SharedPreference перед вызовом setContentView() и, если значение является true того finish() в LoginActivity и открыть другую Activity.

Ссылка на документы я предоставленном хороший пример создания, открытия и редактирования SharedPreferences

Смежные вопросы