@android_ru

Страница 855 из 3205
Владислав
20.01.2017
08:32:41
?

Sergey
20.01.2017
08:42:20
как вызвать диалог на запрос пермишена если нажали Never ask again ?

http://prntscr.com/dxzawm

Google
Sergey
20.01.2017
08:42:42
делать проверку на shoudShowRationale

Pavel
20.01.2017
08:43:14
Отправляй ответ не напрямую во фрагмент, а например в презентер, а в нём уже решай что с ним делать
ну хз, получается тож самое ток логика уходит в презентер. Хотя мб и по красивее будет. Странно просто что файрбейз не добавили cancel для тасок своих.

Sergey
20.01.2017
08:43:52
если возвращает true, значит надо обьяснить юзеру зачем тебе этот пермишен и попросить включить его в настройках

Павел
20.01.2017
08:44:46
А зачем отменять таск? Это же регистрация, насколько я понял

Pavel
20.01.2017
08:49:08
А зачем отменять таск? Это же регистрация, насколько я понял
ну это я для примера взял регистрацию. Что первое на ум пришло.

у них же там все на https://developers.google.com/android/reference/com/google/android/gms/tasks/Task

запилино

вот видишь там есть addOnCompleteListener(Activity activity, OnCompleteListener<TResult> listener) если активность передаешь то он привязывается к ее жизниному циклу

и листенер удаляется если у активности он стоп вызывается

я думал мож для фрагментов есть чо нить похожее

Павел
20.01.2017
08:51:17
ну хз, получается тож самое ток логика уходит в презентер. Хотя мб и по красивее будет. Странно просто что файрбейз не добавили cancel для тасок своих.
Ну у тебя 2 выхода, на мой взгляд: 1) Дожидаться ответа от сервера, показывая например прогресс бар и не разрушать фрагмент, пока ответ не придёт. 2) Смещать логику в презентер, где уже и решать что с ней делать. Я бы пошёл вторым путём, потому что первый не соответствует оптимистичному дизайну.

Google
Pavel
20.01.2017
08:51:42
ну походу да, так и прийдется

спасибо за советы

Pavel
20.01.2017
09:11:28
ок

Alexander
20.01.2017
09:13:44
Можно ли как-нибудь повесить аннотацию NotNull на эммиты в Observable в Rx?

Sergey
20.01.2017
09:17:57
если возвращает true, значит надо обьяснить юзеру зачем тебе этот пермишен и попросить включить его в настройках
а можно как то проверить что нажал Never ask again? что бы открыть сетинги приложения

Sergey
20.01.2017
09:19:24
логика такая, если езер отменил пермишен, надо обьяснить ему зачем нужен этот пермишен

Sergey
20.01.2017
09:19:39
так это понятно что объячнить

Sergey
20.01.2017
09:19:40
можно, но костыльно
давай только без костылей

Sergey
20.01.2017
09:19:44
но запросить их уже нельзя

Sergey
20.01.2017
09:20:07
но запросить их уже нельзя
да, потому и показывай свой диалог

Dmitriy
20.01.2017
09:20:10
Rx2 помоему с null что то как раз поменял

Sergey
20.01.2017
09:20:13
я хочу чекнуть чтобы показать сетинги т.к. диалог на реквест уже не покажется

Gleb
20.01.2017
09:20:23
давай только без костылей
)) Ну мож человеку ну очень надо это детектить, как мне когда-то ))

Sergey
20.01.2017
09:21:11
что за костыль?

Google
Alexander
20.01.2017
09:21:23
Rx2 помоему с null что то как раз поменял
Спасибо. Каогда время будет, буду мигрировать)

Gleb
20.01.2017
09:21:30
что за костыль?
сек... загажники ща достану

Sergey
20.01.2017
09:21:46
наверное через листнер изменения лайаута, addOnLayoutChangeListener не?

The
20.01.2017
09:22:22
кто нибудь юзал thirty part lib Parcels?

ArrayMap: New hash 0 is before end of array hash 481935019 at index 1 key null

Alexander
20.01.2017
09:24:26
что за костыль?
Если нажал neverShowAgain, то в onRequestPermissionsResult упадет grandResults==PackageManager.PERMISSION_DENIED и shouldShowRequestPermissionRationale будет возвращать false

Sergey
20.01.2017
09:25:04
shouldShowRequestPermissionRationale будет возвращать false - возвращает тру для камеры

Alexander
20.01.2017
09:25:09
или grandResults будет пустой, точно не помню

Gleb
20.01.2017
09:30:30
или grandResults будет пустой, точно не помню
на базе grandResults и shouldShowRequestPermissionRationale - делается вывод о том что произошёл невераск - только это произойдет единожды дальше - уже не подцепишься - поэтому я тут в преференсах сохраняю невераск лист - чтоб не лезть их и не запрашивать - зная что диалог всё равно не вылезит - а код будет думать, что его юзер лочит... ...да ...да ... там .... система нипель...блин

Gleb
20.01.2017
09:32:34
У меня каждый раз вылазит
если он нажмет невераск - не вылезит, а вкоде - будет так как будто диалог был - точно так же ))

Alexander
20.01.2017
09:35:16
Мой PermissionsManager - http://pastebin.com/SssZpQQ0 У меня каждый раз появляется SnackBar c кнопкой "Настройки". До этого менеджера тоже не появлялся, а потом я сам афигел)

Gleb
20.01.2017
09:37:12
Мой PermissionsManager - http://pastebin.com/SssZpQQ0 У меня каждый раз появляется SnackBar c кнопкой "Настройки". До этого менеджера тоже не появлялся, а потом я сам афигел)
да...есть даже такой гайд помойму в IOScheid через снэкбар посылать в настройки, если пермишны зафаканы

Alexey
20.01.2017
09:37:57
если он нажмет невераск - не вылезит, а вкоде - будет так как будто диалог был - точно так же ))
боюсь спросить, а вы если в onRequestPermissionsResult у вас приходит DENIED вы снова запрашиваете диалог?

Sergey
20.01.2017
09:38:30
не знаешь как делать, сделай как гугл )

Gleb
20.01.2017
09:39:55
боюсь спросить, а вы если в onRequestPermissionsResult у вас приходит DENIED вы снова запрашиваете диалог?
если при этом - !shouldShowRequestPermissionRationale - я этот пермишн - ставлю на карандаш в шаред преференсы - как невераскнутый, и больше не запрашиваю, и наче - в этот раз нет - значит нет - потом еще раз запрошу

короче пока он невераск не сделает - всегда запрос

как сделал - запоминаю

Google
Gleb
20.01.2017
09:41:06
как он вдруг стал allowed(или грантед .. как там) - вычеркиваю из невераскнутых

такой, так сказать флоу )

Alexey
20.01.2017
09:41:51
если при этом - !shouldShowRequestPermissionRationale - я этот пермишн - ставлю на карандаш в шаред преференсы - как невераскнутый, и больше не запрашиваю, и наче - в этот раз нет - значит нет - потом еще раз запрошу
эм ну это абсолютное нарушение поведения. Шщи потом где у вас там что невераскнутое. Если уже невераскнутое, то все равно нужно кидать запрос, а система вернет вас в onRequestPermissionsResult где нужно просто правильно обработать полученное.

и поведение разное. Если диалог есть - будет onPause - onResume у активити. Если диалога не было - то не будет.

вообще, на мой взгляд несколько не правильная реализация

Gleb
20.01.2017
09:43:46
эм ну это абсолютное нарушение поведения. Шщи потом где у вас там что невераскнутое. Если уже невераскнутое, то все равно нужно кидать запрос, а система вернет вас в onRequestPermissionsResult где нужно просто правильно обработать полученное.
тока так ты не различишь когда просто денай а когда денай с невер аском - хотя может я для себя это неправильно трактую))) ну блин.... если б гугл нормально объяснил по-русски чо он от нас девелоперов хочет - а то сиди...его мысли читай

Admin
ERROR: S client not available

Gleb
20.01.2017
09:44:18
я так понял "правильное поведение"

а зачем тебе различать?
когда всё что мне нужно покрыто невер асками я его посылаю в сетингс

Alexander
20.01.2017
09:45:16
Ну я вот поправил и, как мне кажется все ок. Нажал отклонить - ничего. При следующих нажатиях - rationale и запрос Нажал never - snackbar с настройками. При следующих нажатиях - snackbar

Gleb
20.01.2017
09:45:35
типа чувак, сорян - но мне подругому до тебя не достучаться - и ди и включай теперь ручками

))) повторюсь))) "если б гугл нормально объяснил по-русски чо он от нас девелоперов хочет - а то сиди...его мысли читай"

Sergey
20.01.2017
09:46:23
https://developer.android.com/training/permissions/requesting.html

Alexey
20.01.2017
09:46:27
когда всё что мне нужно покрыто невер асками я его посылаю в сетингс
а. я понял. Тебя под пытками заставили такое пилить:)

Sergey
20.01.2017
09:46:30
все же написано

и пример есть

Alexey
20.01.2017
09:47:04
вообще, если пользователь параноик, то даже если ты его отправил в настройки - он и там таким же останется

Google
Alexander
20.01.2017
09:50:42
вообще, если пользователь параноик, то даже если ты его отправил в настройки - он и там таким же останется
Это понятно, но нужно же объяснить, почему камера не открывается и дать путь решения.

Alexey
20.01.2017
09:51:12
ну в диалоге объяснения можно написать, что если отказался, то камера в настроках

а по другому никак.

Alexander
20.01.2017
09:54:03
Как вариант, но это долгий путь. А, чтобы пользователь воспользовался твоим функционалом - тебе нужно. Так что лучше облегчить ему путь к настройкам.

Gleb
20.01.2017
09:54:10
а. я понял. Тебя под пытками заставили такое пилить:)
Ну от части))) мотивируя это как "мягкое ux-овое настаивание на том чтоб всетаки включил" с минимальным противоречием гайдам ))) вот такие тз ))

Kolas
20.01.2017
10:08:15
а есть какая-нибудь возможность сказать ретрофиту игнорить неизвестные json филды? у меня сейчас в проекте это делается с помощью jacksonconverter: ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);но я решил выпилить fasterxml, с которым он связан

Ruslan
20.01.2017
10:12:33
вопрос по #rx. У меня есть две последовательности одна из которых берет данные из интернета, вторая из локальной бд и есть третья последовательность которая объядиняет эти две последовательность с помощью оператора mergeDelayError. Проблема: "не вызываются onComplete() или onTerminate() у объединяющей последовательности вообще. Я использую frodo для логирования работы rx, так вот frodo говорит что у первая и вторая последовательности завершаются успешно, а вот объединяющая никогда не завершается, то есть onSubscribe затем onNext и все. Дальше ничего не проихсодит даже если айтемов больше нет

Kolas
20.01.2017
10:13:01
для Jackson: http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/DeserializationFeature.html#FAIL_ON_UNKNOWN_PROPERTIES
а есть альтернатива этому в других конвертерах? например, в gsonconverter?

Михаил
20.01.2017
10:16:27
Dmitriy
20.01.2017
10:16:33
Михаил
20.01.2017
10:17:21
Кстати да. Стандартный тоже должен игнорить поля которых нет в модели

Kolas
20.01.2017
10:18:09
спасибо

Ruslan
20.01.2017
10:25:21
а если все это поменять на CombineLatest? на вход даешь две последовательности и после выполнения получишь 2 набора и делай с ними что хочешь
мне же не нужны два набора, из интернета могут данные вообще не придти, если сервер вернул 304 not modified

Yury
20.01.2017
10:30:14
Всем привет. есть ли возможно задать шрифт для всего приложения?

Dmitriy
20.01.2017
10:31:11
мне же не нужны два набора, из интернета могут данные вообще не придти, если сервер вернул 304 not modified
Ну так ты на вход даешь два своих Observable, а потом Func1 все это дело объединяет. Для сетевого запроса можешь добавить onErrorReturn(emptyList)

Dmitriy
20.01.2017
10:32:05
Всем привет. есть ли возможно задать шрифт для всего приложения?
Для всего нет. Можно сделать утилс класс который будет задавать нужный шрифт для вью или делать кастомные вью и там прописать фрифты

Страница 855 из 3205