Подтвердить что ты не робот

Определить, было ли приложение загружено с Android Market

У меня есть библиотека Android, которая загружает данные на тестовый сервер и производственный сервер. Я бы хотел, чтобы разработчики, использующие эту библиотеку, использовали тестовый сервер при разработке и производственный сервер, когда приложение загружается с Android Market.

Возможно ли, чтобы приложение сообщило, откуда оно (Market или non-Market?), я бы предположил, что можно обнаружить присутствие подписанного файла JAR.

4b9b3361

Ответ 1

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

    try {
        PackageManager manager = context.getPackageManager(); 
        PackageInfo appInfo = manager.getPackageInfo(
            YOUR_PACKAGE_NAME, PackageManager.GET_SIGNATURES);

        // Now test if the first signature equals your debug key.
        boolean shouldUseTestServer = 
            appInfo.signatures[0].toCharsString().equals(YOUR_DEBUG_KEY);

    } catch (NameNotFoundException e) {
        // Expected exception that occurs if the package is not present.
    }

YOUR_PACKAGE_NAME должен быть чем-то вроде "com.wsl.CardioTrainer". Это должно быть имя пакета, которое вы использовали в вашем AndroidManifest.xml. Удачи

знак

Ответ 2

Начиная с API 5, вы можете использовать PackageManager.getInstallerPackageName(String). Из документации:

Получить имя пакета приложения, которое установило пакет. Это определяет, на каком рынке появился пакет.

Чтобы получить пакет Android Market, этот пост может помочь.

Ответ 3

Из того, что я могу сказать, нет ничего, что Market Application делает для "флага" приложения, чтобы сказать, что оно было загружено с рынка.

Я видел, что эта проблема подходила другим способом к другой библиотеке Android. AdMob Android SDK можно бесплатно скачать и использовать, как описано в своей вики. Эта библиотека служит для рекламы, поэтому у них есть одно и то же желание, чтобы определить, тестируется ли приложение, которое в настоящее время выполняется разработчиком, или если оно используется "в дикой природе". Их подход состоял в том, чтобы потребовать, чтобы разработчик установил атрибут "тестирование" в XML или вызвал их библиотеку "setTesting (boolean)", чтобы библиотека могла знать, какие объявления будут обслуживаться. Это, очевидно, более ручной подход, который зависит от разработчика, чтобы изменить одну строку кода или XML перед публикацией.

Ответ 4

Вы можете настроить конфигурацию в рабочей среде и использовать пользовательский Instrumentation, который устанавливает конфигурацию в среду тестирования. Перед публикацией на рынок андроидов следует удалить интрументы.

Ответ 5

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

Другая возможность, если он ищет специальный файл или файл конфигурации на SD-карте и отключает его.