Список установленных приложений из Google Play против учетной записи Google
Ниже приведены мои проблемы: -
- Возможно ли получить список приложений, которые пользователь установил, против своей учетной записи google через Google Play, программно с помощью любого api?. Обратите внимание, что я не спрашиваю о списке приложений, установленных на устройстве, но те, которые в какой-то момент были установлены.
Мне нужно решение выше, поскольку я думаю о сценарии в своем приложении, которое:
- Я хочу бесплатно отдать свое приложение пользователю в течение первых трех месяцев, через три месяца, если пользователь удалит приложение и затем снова установит его. Я хочу обнаружить через любой api (из Google Play), который пользователь установил приложение во второй раз (и не должно быть бесплатного использования).
Please note that I don't want to use any web service to store the account id & device id of the user at my side.
Ответы
Ответ 1
Для варианта 2 вы можете создать файл на SD-карте. Это останется там, когда пользователь удалит/установит. Но пользователь всегда может удалить ваш специальный файл. Если вы не делаете что-то на своей стороне, вы никогда не уверены, что пользователь уже использовал ваше приложение раньше.
Чтобы быть абсолютно уверенным, храните его в Интернете:
Вам нужно будет иметь очень простую базу данных, в которой содержится список device_id, который установил ваше приложение.
Кроме того, веб-страница заполняет эту базу данных.
В своем приложении вы загружаете/открываете эту веб-страницу, которую веб-страница будет заполнять БД.
App > WebClient (или другое), которое открывает http://www.example.com/registerDevice.php?device_id=. Сайт php заполняет db.
Вам нужно будет проверить базу данных, если текущее устройство уже установило это приложение для работы/не работает. Вы можете сделать это через один и тот же php и проверить ответ. Например, вы можете вернуть "ok" или "не нормально" или что-то еще.
Ответ 2
Самый простой способ - получить учетную запись пользователя при первом запуске приложения и отправить эту деталь вам.
Как это можно сделать, хорошо документировано здесь: Как получить основной адрес электронной почты устройства Android
Вам нужно будет добавить еще одну строку кода для возврата к базе данных при первом запуске приложения.
EDIT: для не-веб-решения просто добавьте таймер в начало вашего приложения:
schedule(TimerTask task, Date when)
задача должна заключаться в том, чтобы добавить токен ПОСЛЕ того периода времени, который вы хотите передать, в память телефона с данными учетной записи пользователя для проверки подлинности (см. первое решение для получения данных учетной записи)
Наконец, как указано выше, добавьте обратную запись в память телефона для этого конкретного файла, чтобы узнать, использовал ли пользователь приложение раньше.
Проблема с любым типом аутентификации, основанной на памяти телефона, заключается в том, что люди могут легко удалить токен, если они могут его найти, и снова использовать приложение.
Ответ 3
Попробуйте выполнить эту конкретную реализацию устройства:
PackageManager packageManager = getContext().getPackageManager();
List<ApplicationInfo> applications = packageManager.getInstalledApplications(
PackageManger.GET_UNINSTALLED_PACKAGES);
// retrieves some information about all applications (even uninstalled ones)
// which have data directories
Конечно, этот метод не будет работать, если пользователь заменит устройство. Но вам не нужно использовать какой-либо веб-сервис.
Ответ 4
Вы можете использовать это, сохранив базу данных идентификатора хэшированного устройства и пользователя google id на стороннем сервере.
Также см. http://android-developers.blogspot.de/2011/03/identifying-app-installations.html