✙ БессзуГик
ну да, у вас то инфа 100ка
Как бы да:) но эта тема выходит за рамки тематики андроид чата
Konstantin
Как бы да:) но эта тема выходит за рамки тематики андроид чата
предлагаю вам исправить статью на википедии и вырезать ересь про браузер
Sasha
1. введите критерий тонкости клиента 2. измерьте толщину клиента 3. мэтчинг
Konstantin
привет. есть инфа как заставить на КСЯОМИ рабоать fingerprint api? чек доступности сканера возвращает false
Andrey
все привет! есть ли способ перехватить нажатие на кнопку play в другом приложении? netflix, например. или youtube
Himars
с тем же сервером. Запрашивать у него текущую дату.
Ну а если мне нужен актуальный таймстемп для 20 разных запросов в разных стейтах приложения. Как его лучше хранить и держать актуальным? Как то не хочется каждый раз его запрашивать
Himars
ну если в лоб - хранить дельту с временем на девайсе. Но нужно следить изменил ли юзер на девайсе время.
Да, я так и думал, просто может кому извесны готовые решния что бы не писать свое с нуля с багами 🌝
Alexey
Да, я так и думал, просто может кому извесны готовые решния что бы не писать свое с нуля с багами 🌝
Выше Алексей правильно написал, зачем у клиента его требовать если есть время запроса?
Himars
Метка не передается в чистом виде если что
Алексей
Для верификации его подлинности, как то так.
верификация подлинности клиента на основе данных, которые клиент может придумать как угодно?
Himars
верификация подлинности клиента на основе данных, которые клиент может придумать как угодно?
там есть нюанс который не касается моего вопроса. Мы вроде как от него уже отошли
Алексей
иногда используется приём "неправильные часы - сам себе злобный буратино" :)
Andrey
AccessibilityService, больше наверное никак
через них можно перехватить конкретную кнопку в другом приложении?
Himars
иногда используется приём "неправильные часы - сам себе злобный буратино" :)
Как я понимаю, неправильные часы - это проблема всех разработчиков мобильных платформ)
Alexey
да вроде как любых платформ) клиенту нельзя доверять
Алексей
Как я понимаю, неправильные часы - это проблема всех разработчиков мобильных платформ)
будет хорошо, если вы поясните, зачем вам на самом деле метка времени, и почему её должен ставить клиент. Потому что пока ответ "не делайте так"
Himars
через них можно перехватить конкретную кнопку в другом приложении?
Ну как бы да, мы можем следить за нажатием кнопки в другом приложении. Только нужно заранее узнать ID целевой кнопки.
Himars
будет хорошо, если вы поясните, зачем вам на самом деле метка времени, и почему её должен ставить клиент. Потому что пока ответ "не делайте так"
Этого я вам точно не скажу, так как сам не до конца понимаю резонность проверки подлинности на основании метки времени. Но так у нас работает бек, и наверное не просто с потолка взяли такой подход.
Алексей
Вот с ними тогда и поговорите на эту тему) Проверка подлинности - это из области шифрования и подписи запросов, скорее, а не из подсчёта времени.
Alexey
В таком случае наверное там защита от подделки запросов стоит. Тогда и парится не надо, бэк сам должен отстрелить неправильный timestamp
Andrey
а реально ли сделать что-то типа такого сервиса который сидит в фоне и слушает нетфликс (ютуб). при нажатии на плей берет стрим (либо ссылку) и передает его дальше?
Himars
В таком случае наверное там защита от подделки запросов стоит. Тогда и парится не надо, бэк сам должен отстрелить неправильный timestamp
Он и отстреливает. Но проблема в том что если обыватели андроид девайсов просто завтыкали настроить время, то они попадают в группу отстреленных. А это жалобы и недовольство, что в результате приводит к нагрузке колл центра и к понижению рейтинга апки в маркете.
Anton
Вот такая ошибка: All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 28.0.0, 27.1.1. Examples include com.android.support:animated-vector-drawable:28.0.0 and com.android.support:support-media-compat:27.1.1 less... Насколько я понимаю это значит что какая-то из библиотек использует support library 27.1.1. Но как узнать какая ?
Anton
скорее всего firebase
Нету его у меня
Сергій
просто подключи com.android.support:support-media-compat:28.0.0
Сергій
просто подключи com.android.support:support-media-compat:28.0.0
или почитай про gradle resolution strategy
Anton
или почитай про gradle resolution strategy
Пошел читать...спасибо
Kirill
Привет, есть такой экран: scrollview, внутри него ViewPager, внутри него RecyclerView. Пэйджеру задаю высоту recyclerView. Проблема в том, что recyclerView думает, что он весь на экране и рисует все итемы
Kirill
Как можно обьяснить ему какая его часть видна, чтобы он отрисовывал только видимые
Akb
Можете скинуть ссылки на проекты Android MVVM с тестами, плез
Sasha
Господа и дамы, Я запилил свою вью, наследующуюся от LinearLayout. При инициализации я вызываю View.inflate(context, R.layout.my_awesome_layout, this), и lint говорит, что здесь this утекает наружу. Я правильно понимаю, что в данной ситуации это неопасно? Можно ли как-то избежать этого ворнинга?
Sasha
да, в конструкторе
Sasha
спасибо)
Anonymous
Как добавить к RecyclerView Divider для 2 Типа. Так как у меня 2 типа Header и Element.
Kirill
rv.adapter.getItemViewType()
Kirill
как вариант
Anonymous
Сергій
В смысле?
пишешь свой ItemDecorator
Kirill
ну да
Сергій
и там чекаешь тип и рисуешь под него дивайдер
Kirill
позицию в адаптере через recyclerview получаешь по вьюхе
Kirill
там методы есть
Kirill
я только хз насколько это норм с точки хрения производительности
Сергій
нормально
Kirill
отлично
Anonymous
У ItemDecoration нету такого способа получить holder, чтобы понять к какому типу он относится
Anonymous
есть
как зназывается?
Сергій
там есть RecyclerView
Kirill
rv.adapter.getItemViewType()
Anonymous
getItemOffsets?
Anonymous
да он legacy
Anonymous
rv.adapter.getItemViewType()
И чо мне щяс весь список передавать чтоли?
ᔕᗩᗰ
Всем привет! Подскажите пжлста по анимациям. Есть файл с простой анимацией translate (<translate android:duration="1000" android:toYDelta="-500" />), который поднимает кнопку на 300 вверх. Анимацию запускаю и она работает корректно (Animation moveUpFab = AnimationUtils.loadAnimation(getApplication(), R.anim.fab_moveUp); fab.startAnimation(moveUpFab);), но повторный клик работает только в той области, где она до этого находилась. Т.е. по сути кнопка меняет местоположение виртуально, но по факту остается по тем же координатам, что и до выполнения анимации. Если еще параллельно менять ее координаты программно, то она улетает в два раза выше, куда копать? Но если вызывать через fab.animate().setDuration(1000).alpha(0.0F).alphaBy(2.0f).yBy(-500).rotationBy(45.0f); то все работает корректно
Anonymous
чо по проще нету ничего?
Сергій
чо по проще нету ничего?
возьми библиотеку
Kirill
И чо мне щяс весь список передавать чтоли?
тебе в методе передается рекуклер
Сергій
где уже всё написали
Kirill
у него берешь адаптер и спрашиваешь тип
Kirill
позицию спрашиваешь тоже у рекуклера
Anonymous
ясно
Сергій
https://proandroiddev.com/itemdecoration-in-android-e18a0692d848
Alexey
всем привет, подскажите, пожалуйста, способ решения проблемы. Есть два фрагмента и ViewModel-и у каждого из них с LiveData-полями, эти LiveData-поля участвуют в формировании запроса к серверу (я их изменяю из вью). При этом, если я перехожу от одного фрагмента ко второму и возвращаюсь обратно к первому, то состояние вью сбрасывается и мне его можно легко восстановить через observe LiveData-полей, но при этом у меня возникает круговая зависимость, когда я реагирую на изменения вью и отправляю изменения в LiveData-поле, но при этом, чтобы восстановить состояние вью, беря последнее значение из LiveData-поля, я делаю observe этих полей. У меня получается круг: observe -> view changes -> observe etc. Каким образом эффективнее всего от этого избавиться? Простой пример: EditText/Spinner Я хочу отобразить после возвращения на первый фрагмент сохраненный в LiveData текст через observe и вызываю метод setText у вью, это, в свою очередь, триггерит опять метод observe и так по кругу...
Андрей
всем привет, подскажите, пожалуйста, способ решения проблемы. Есть два фрагмента и ViewModel-и у каждого из них с LiveData-полями, эти LiveData-поля участвуют в формировании запроса к серверу (я их изменяю из вью). При этом, если я перехожу от одного фрагмента ко второму и возвращаюсь обратно к первому, то состояние вью сбрасывается и мне его можно легко восстановить через observe LiveData-полей, но при этом у меня возникает круговая зависимость, когда я реагирую на изменения вью и отправляю изменения в LiveData-поле, но при этом, чтобы восстановить состояние вью, беря последнее значение из LiveData-поля, я делаю observe этих полей. У меня получается круг: observe -> view changes -> observe etc. Каким образом эффективнее всего от этого избавиться? Простой пример: EditText/Spinner Я хочу отобразить после возвращения на первый фрагмент сохраненный в LiveData текст через observe и вызываю метод setText у вью, это, в свою очередь, триггерит опять метод observe и так по кругу...
я бы разделил это на 2 разных лайвдаты
Андрей
то есть
Андрей
когда жмешь на спиннер - изменяешь вью модель через SingleLiveEvent
Андрей
сохраняешь текущее состояние во вью модели