Ответы пользователя по тегу Android
  • Как получить applicationid Android приложения используя php?

    Вопрос не имеет отношение к Андроиду.

    У вас текстовый файл настроек *.gradle и php-скрипт, которым вы хотите вытянуть значение параметра. Регулярное выражение хорошо для этого подходит.
    Ответ написан
    Комментировать
  • Почему в Android 8.0 на экране блокировки исчезает уведомление сервиса, запущенного в режиме foreground?

    VDG
    @VDG Автор вопроса
    Оказался баг студии, конкретнее связки: Instant Run и Build Cache.

    Случайно обратил внимание, что уведомление выводится с низким приоритетом IMPORTANCE_MIN, хотя в исходнике стоит IMPORTANCE_DEFAULT. То есть, на устройстве работал старый неактивный код, с когда-то использованным IMPORTANCE_MIN. И, соответственно, уведомление сервиса не выводилось на экран блокировки.

    Замечу, что пересборка проекта ни к чему не приводила, так же как и удаление канала уведомления и самого приложения. Instant Run упорно брал из кеша старый мёртвый код с IMPORTANCE_MIN и заливал его на устройство как только что скомпилированный. Причём глючил кеш только на 8.0, что ещё больше запутывало. Короче, помогла только очистка этого кеша.
    Ответ написан
    Комментировать
  • Есть ли коммунити куда можно отдать андроид программу на тестирование?

    Betatesters.io – платформа, соединяющая разработчиков и тестировщиков приложений.
    Проект принадлежит Instabug – компания делает SDK для сбора отзывов и отслеживания ошибок.

    Для тестеров и разработчиков этот проект бесплатен, но подразумевается, что издатели будут поощрять пользователей какими-либо нематериальными вознаграждениями.

    Знаю что есть и другие сообщества.
    Ответ написан
    1 комментарий
  • Как скрыть виртуальные кнопки на устройстве и в разметке?

    Создайте проект из "Fullscreen Activity"-шаблона студии. Там всё что нужно.
    Ответ написан
    Комментировать
  • Как организовать постоянные обновления БД с сервера для андроида?

    Создайте отдельную таблицу (SYNC): [TIMESTAMP], [UPDATED_ID]
    Каждый раз, когда добавляете или изменяете значение в основной базе данных, добавляйте новую запись в SYNC-таблицу.
    UPDATED_ID - это id изменённой/добавленной записи в основной базе.
    TIMESTAMP - текущее серверное время.
    SYNC-базу можно сделать на Redis или аналогичном in-memory хранилище, а не только на SQL.

    На клиенте (в приложении) храните время последней синхронизации с сервером (просто long).
    лучше, чтобы сервер сам формировал timestamp (текущее серверное время) и отдавал клиенту

    Когда клиенту потребуется синхронизироваться, отправляете эту временную метку серверу. На сервере из SYNC таблицы вытаскиваете id всех новых и обновлённых записей после полученной от клиента timestamp. Убираете дубли (они могут быть для обновлённых записей). Осталось только по этим id прочитать данные из основной базы и отправить их клиенту.

    Плюсы по сравнению с тем, что уже предложено

    - не трогаете свою базу, не вставляете новые колонки
    - в приложении просто храните временную метку последней синхронизации
    - в приложении для синхронизации не требуется предварительно вычитать и обработать всю локальную базу

    PS. и как уже сказали, вы пишите аналог Firebase realtime database. Она делает ровно тоже самое. Можно попробовать поискать как реализовано там.
    Ответ написан
    Комментировать
  • Почему не срабатывает setOnClickPendingIntent в Android 7.0 Nougat в уведомлении?

    VDG
    @VDG Автор вопроса
    Удалось самому решить проблему.

    Баг хорошо виден на эмуляторе, где можно делать любое количество кликов по одной и той же точке. Суть бага в том, что периодически теряются клики в области кастомного уведомления. Находятся такие точки, где можно утыкаться до бесконечности, пока не сместишь мышь. Всё это носит случайный характер.

    Похоже, этот баг связан с внутренней оптимизацией, излишней. Если корневой layout пустой, то на него вообще не повесится обработчик клика через setOnClickPendingIntent. Если не пустой, то клики проходят рандомно.

    Чтобы убрать баг достаточно добавить в разметку элемент типа Button/ImageButton. Просто добавить, не вешая на него обработчик клика, и тогда нормально заработают клики на все другие элементы, на которые повешен setOnClickPendingIntent.

    Пример неработающей разметки, в которой для исправления достаточно раскомментировать ImageButton.
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	xmlns:tools="http://schemas.android.com/tools"
    	android:layout_width="match_parent"
    	android:layout_height="match_parent"
    	android:orientation="horizontal"
    	tools:layout_height="64dp">
    
    	<FrameLayout
    		android:id="@+id/button_1"
    		android:layout_width="wrap_content"
    		android:layout_height="match_parent"
    		android:layout_weight="1"
    		android:background="@color/colorPrimaryDark">
    
    		<ImageView
    			android:layout_width="wrap_content"
    			android:layout_height="wrap_content"
    			android:layout_gravity="center"
    			android:src="@drawable/ic_notify_1"/>
    	</FrameLayout>
    
    	<FrameLayout
    		android:id="@+id/button_2"
    		android:layout_width="wrap_content"
    		android:layout_height="match_parent"
    		android:layout_weight="1"
    		android:background="@color/colorPrimaryDark">
    
    		<ImageView
    			android:layout_width="wrap_content"
    			android:layout_height="wrap_content"
    			android:layout_gravity="center"
    			android:src="@drawable/ic_notify_2"/>
    
    		<!--<ImageButton
    			android:layout_width="64dp"
    			android:layout_height="64dp"
    			android:layout_gravity="center"
    			android:layout_margin="0dp"
    			android:padding="0dp"
    			android:src="@drawable/ic_notify_2"/>-->
    	</FrameLayout>
    </LinearLayout>
    Ответ написан
    Комментировать
  • Как информировать пользователя об обновлении?

    Ну и намудрили. У себя на сервере положите текстовый файлик с числом последней версии вашего приложения, которое опубликовали в плее: "mysite.ru/app123.txt". И при запуске приложения тащите этот файлик с сервера и сравниваете строку из него с BuildConfig.VERSION_CODE. Всё.

    Если нет своего сервера, то можно воспользоваться бесплатным Firebase-сервером (или брать версию из его базы, или настроек). Или воспользоваться таким же бесплатным сервером GitHub'а. Меняете код версии у себя на компе и коммитите.
    Ответ написан
    Комментировать
  • Как лучше хранить сведения о купленных пользователем игровых монетах?

    Претензии будут всегда. Можно хранить в SharedPreferences, они после удаления приложения часто остаются. Но, чтобы снизить претензии до минимума, нужна серверная часть. Можно не поднимать свой сервер, в вашем случае достаточно хранить количество неизрасходованных монет в Firebase, привязав запись к уникальному id пользователя. Id не меняется до сброса устройства к заводским установкам, или покупки нового телефона. Если платящие игроки не играют в вашу игру (тавтология в кубе :) целый год, то на смену id можно не обращать внимание.
    Ответ написан
    Комментировать
  • Почему отваливаются фоновые службы на Android?

    Фоновый сервис останавливается системой при нехватке оперативной памяти. Это нормальное поведение. У вас, наверно, памяти несколько гигабайт, поэтому сервис так долго живет. Чтобы сервис не убивался, он должен иметь тип foreground - работающий на переднем плане.
    Ответ написан
    Комментировать
  • Как сделать распродажу своего приложения в Google Play?

    Берёте и временно меняете цену встроенной покупки на 50% ниже. Агрегаторы, если вы им интересны, мониторят ваши цены. Заметив падение, они публикуют инфу о "скидке".

    UPD. Недавно такая возможность появилась.
    Создавайте распродажи.

    Теперь вы можете предлагать платные приложения со скидкой. Для этого выберите приложение и нажмите Цены и распространение > Создать распродажу.
    https://support.google.com/googleplay/android-deve...
    Ответ написан
    Комментировать
  • GooglePlay - заворачивает зарубежных покупателей?

    Приложение популярное? Возможно где-то, даже в отзыве, кто-то написал, что приложение ломается взломщиком (Freedom, ArtMoney). Люди ломанулись пробовать, гугл это ловит и заворачивает.
    Ответ написан
    1 комментарий
  • Как убрать status bar в android 5-6?

    У окна должен быть тип TYPE_SYSTEM_ERROR. Он перекроет статус-бар, свайп не сработает, и это окно ловит касания. Но у такого окна другая проблема, он не наезжает на панель навигации на аппаратах с виртуальными кнопками. Да и всё равно панель навигации можно достать свайпом снизу.
    Ответ написан
    Комментировать
  • Как сделать apk совместимым с другими версиями android?

    В build.grandle найдите minSdkVersion и поставьте 16-ю версию (4.1).

    ...
    	defaultConfig {
    		minSdkVersion 16
    		...
    	}
    Ответ написан
    Комментировать
  • Как сделать защиту от возврата денег в android?

    Сам столкнулся с возвратом средств. У меня было урезанное бесплатное приложение и полнофункциональное/PRO платное. Спустя некоторое время кто-то где-то из пользователей прочухал, что можно покупать PRO, бекапить его, возвращать деньги и доставать из бекапа. Видимо где-то об этом разошлась инфа, резко посыпались такие возвраты. Защиты от этого нет. Пришлось заморачиваться и закрыть платное приложение, а в бесплатное ввести инаппы. Возвраты прекратились. Но действительно, нет такого в API эвента об отмене покупки.

    Поэтому для себя решил, что если ситуация повторится, буду у пользователя сохранять Order ID, тот который приходит при покупке в таком виде GPA.1234-5678-9012-3456. В Payments Merchant Center при отмене покупки я это увижу и после синхронизации приложения с сервером смогу у пользователя отменить покупку.
    Ответ написан
    3 комментария
  • Почему не компилится проект на Android Studio 1.5.1?

    Словил эту же ошибку.

    "Error:Execution failed for task ':app:preDexDebug'" - означает превышение лимита в 65K методов в Dex. Решил использованием Multidex. Всё элементарно.

    Building Apps with Over 65K Methods | Android Developers
    developer.android.com/intl/ru/tools/building/multi...
    Ответ написан
    Комментировать
  • Как сделать подписку для приложения Android?

    Вот эту либу для подобного использую.

    Библиотека для совершения покупок внутри приложений (Android In-App Billing v.3)
    habrahabr.ru/post/233265
    Ответ написан
    Комментировать
  • Трансляция аудиопотока с ПК на смартфон?

    Я бы на Али поискал приставку, у которой HDMI-вход/выход и линейный выход аналога. Не верится, что китайцы такое не делают, - оно само напрашивается.
    Ответ написан
    Комментировать
  • Проблемы в Android Studio?

    Упорно не хотела устанавливаться, но сейчас стала у меня главной IDE. Eclipse закрыл и новое приложение целиком написал на студии. Так что для меня она совсем не сырая.
    Ответ написан
    1 комментарий
  • Бесплатный дизайн приложения или игры под andoid / iphone / windows phone — кому нужен?

    А иконку для приложения (не игра) и рекламный «баннер», ему соответствующий (для Маркета), сможете сделать?
    Ответ написан