Как проверить источник установки в андроиде программно, независимо от того, из магазина воспроизведения или нет? [Дубликат]

Основываясь на сообщении в потоке: - https://datatables.net/forums/discussion/21001/how-to-keep-current-page-after-sorting

Выводы: -

Если вы имеете в виду щелчок на заголовке для запуска сортировки, то да, это всегда будет возвращать вас на первую страницу, нет никакого способа обойти это без изменения DataTables , или применяя свой собственный сортировщик / клик-прослушиватель к элементам заголовка.

Так что в принципе это невозможно по умолчанию (означает, что данные не предоставляют эту функцию).

Вы можете задать вопрос на datatables Site и попросить их сделать это и добавить его в качестве обновления существующей библиотеки.

Возможно, они это сделают.

45
задан Lin-Art 13 February 2013 в 12:51
поделиться

3 ответа

Класс PackageManager поставляет метод getInstallerPackageName , который укажет вам имя пакета для любого установленного вами пакета. Боковые приложения не будут содержать значения.

EDIT: ответьте @mttmllns ' ответ ниже относительно магазина приложений Amazon.

44
ответ дан Community 21 August 2018 в 22:56
поделиться
  • 1
    Он работает очень хорошо. – ttom 30 May 2012 в 07:51
  • 2
    @AbhishekB, в какую версию Android вы? Вы в эмуляторе? – MattC 14 December 2012 в 21:47
  • 3
    @AbhishekB Я не знаю, как найти начало загруженных приложений. Я не уверен, как это можно было бы отслеживать, поскольку технически это всего лишь файл APK, который загружается на устройство где-то, а затем предположительно устанавливается через PackageManager. – MattC 17 December 2012 в 21:46
  • 4
    Ссылка getinstallerPackageName возвращает ошибку сервера. Таким образом, ссылка не работает. – HasH_BrowN 20 December 2014 в 09:13
  • 5
    мы можем установить имя пакета установщика через adb. есть ли другой api, с помощью которого мы можем проверить, что приложение установлено через playstore. – Nikhil bohra 27 April 2017 в 12:26

Я использую этот код для проверки, если сборка была загружена из хранилища или загружена:

public static boolean isStoreVersion(Context context) {
    boolean result = false;

    try {
        String installer = context.getPackageManager()
                                    .getInstallerPackageName(context.getPackageName());
        result = !TextUtils.isEmpty(installer);
    } catch (Throwable e) {          
    }

    return result;
}
17
ответ дан AndyW 21 August 2018 в 22:56
поделиться
  • 1
    как мы тестируем это, не навязывая приложение для игры в Google для тестирования? – IHC_Applroid 14 March 2018 в 22:55
  • 2
    Я не думаю, что это было бы возможно. Однако вы можете использовать частную бета-версию. – Philipp E. 15 March 2018 в 09:14

И FYI , по-видимому, , последняя версия магазина Amazon окончательно устанавливает PackageManager.getInstallerPackageName() на "com.amazon.venezia", а также контрастирует с Google Play "com.android.vending".

23
ответ дан mttmllns 21 August 2018 в 22:56
поделиться
  • 1
    Невозможно сделать статическую ссылку на нестатический метод getInstallerPackageName (String) из типа PackageManager – Vivek Warde 12 April 2015 в 05:31
  • 2
    У каждого магазина App Store есть свой собственный marketapp на Playstore, который, в свою очередь, устанавливает свои апки (пакеты). Packagemanager getInstaller ... () возвращает имя пакета marketapp, в котором установлен данный apk. Например. com.amazon.venezia - это название пакета amazon marketapp. Довольно умный, потому что тогда PlayStore может контролировать, какие рыночные клиенты доверяют. Это предназначено для предотвращения всех ненадежных боковых нагрузок. Заметив, что поглощение новых версий ОС Android резко падает. KitKat может стать стандартом defacto. – Dominic Cerisano 24 July 2015 в 22:57
  • 3
    Метод getInstallerPackageName () возвращает правильное значение в Redmi Note 3, но возвращает null в HTC. Является ли это устройство зависимым? – Anand 16 April 2018 в 12:17
Другие вопросы по тегам:

Похожие вопросы: