У меня есть приложение, использующее Chrome custom tabs
, чтобы открыть некоторые ссылки, мне нужно иметь событие каждую секунду в течение всего времени пребывания пользователя в Chrome или знать, сколько раз он остается в Chrome. Для меня единственный способ сделать это - использовать Service
. Можно ли сделать это по-другому?Прослушать хром пользовательский вкладка события события
ответ
Для реализации пользовательских вкладок chrome я следил за this учебником, github link.
Мое решение в основном полагаться на булевыми и System.currentTimeMillis().
Шаг - 1: Объявляет глобальные переменные два класса,
private boolean isCustomTabsLaunched = false;
private long customTabsEnterTime;
Шаг - 2: Установка значений для выше переменных при launchUrl.
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "FloatingActionButton");
// Launch Chrome Custom Tabs on click
customTabsIntent.launchUrl(CustomTabsActivity.this, Uri.parse(URL));
isCustomTabsLaunched = true;
customTabsEnterTime = System.currentTimeMillis();
Log.d(TAG, "customTabsEnterTime = " + customTabsEnterTime);
}
});
Шаг - 3: Вычислить время пребывания в методе onResume.
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
if (isCustomTabsLaunched) {
isCustomTabsLaunched = false;
calculateStayTime();
}
}
private void calculateStayTime() {
long customTabsExitTime = System.currentTimeMillis();
Log.d(TAG, "customTabsExitTime = " + customTabsExitTime);
long stayTime = (customTabsExitTime - customTabsEnterTime)/1000; //convert in seconds
Log.d(TAG, "stayTime = " + stayTime);
}
Для того, чтобы сделать код более надежным вы можете, как хранить булево isCustomTabsLaunched и долго customTabsEnterTime в настройках или базы данных, так что в любом случае эти два PARAMS разрушаться, как ваша деятельность может получить уничтожить в фоновом режиме, если пользователь пребывания долго время в хромированной пользовательской вкладке.
Спасибо за ваш ответ @Chitrang, проблема с вашим решением заключается в том, что вы убиваете активность во время навигации по хромированию, 'onResume()' никогда не будет вызывать, и вы потеряете данные:/ – Dichoben
Как вы собираетесь убить Мероприятия? Или вы хотите убить приложение, тогда решение не будет работать. – Chitrang
Создать свой YourBroadCastReceiver класс следующим образом
public class YourBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Called every 60 seconds","called");
}
}
После запуска пользовательская вкладка успешно создать Alarm PendingIntent, который будет запускать YourBroadCastReceiver один раз каждые 60 сек.
// Retrieve a PendingIntent that will perform a broadcast
Intent repeatingIntent = new Intent(context,
YourBroadCastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context, _pendingIntentId, alarmIntent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Set the alarm to start at 10:00 AM
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
manager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 60 * 1000, // repeat for every 60 seconds
pendingIntent);
после закрытия пользовательской вкладки не забудьте отменить вашему PendingIntent
PendingIntent.getBroadcast(
context, _pendingIntentId, alarmIntent, 0).cancel();
- 1. JQuery прослушать видео-события
- 2. прослушать события на .load().
- 3. хром вкладка события не работают на фон JS
- 4. как прослушать для отправки события.
- 5. Java (Swing) прослушать ключевые события
- 6. Прослушать определенные события (прослушиватель объектов)
- 7. Прослушать все события в JavaScript
- 8. хром addeventlistener анимация события
- 9. пользовательский щелчок события события, виджет jquery
- 10. Прослушать прокрутку события из переполнения: скрытые элементы
- 11. Как прослушать события AVPlayer «на поиск»?
- 12. Harmattan: Как прослушать входящие sms-события
- 13. Как объявить и прослушать пользовательские события?
- 14. Как прослушать входящие sms-события в iOS
- 15. javascript: прослушать события postMessage из определенного iframe
- 16. Прослушать HTML/CSS-события на веб-странице
- 17. Прослушать события на ElementList без явного доступа.
- 18. Прослушать события: в HTML от .NET
- 19. прослушать события tcp в win CE
- 20. Пользовательский объект события javascript?
- 21. Вкладка Контроль не срабатывает системные события
- 22. Расширения Google: вкладка События - изменение окон?
- 23. Начальная вкладка не запускает открытые, готовые события
- 24. Хром ключевые события alt блокировки клавиш
- 25. Тренировка события загрузки на добавлении хром
- 26. Отслеживание события javascript с помощью консоли хром
- 27. Пользовательский календарь событий события PHP
- 28. Пользовательский вид, продолжает передавать события?
- 29. Пользовательский прослушиватель Android для события
- 30. События INotifyPropertyChange и пользовательский PropertyDescriptor
Это звучит, как вы хотите прослушивать событие, которое увольняет, когда Пользовательская вкладка закрывается. Это верно? – ade
Да, это может сработать, если у меня есть общее время сеанса пользователя в обратном вызове, но лучше всего будет иметь событие каждый Х-время. – Dichoben