Определить, если приложение было загружено с Android Market
У меня есть библиотека Android, которая загружает данные на тестовый сервер и рабочий сервер. Я бы хотел, чтобы разработчики, использующие эту библиотеку, использовали тестовый сервер при разработке и производственный сервер при загрузке приложения с Android Market.
это возможно для приложения, чтобы сказать, откуда он пришел (рынок или нерыночный?) Я бы предположил, что можно обнаружить присутствие подписанного файла JAR.
5 ответов:
Да, вы можете использовать подпись для этого. Если вы используете Ключ отладки для подписи вашего приложения во время разработки и ключ выпуска при загрузке вашего приложения на рынок, вы можете проверить подпись, с которой было подписано приложение, и на основе этого использовать тестовый или производственный сервер. Вот небольшой фрагмент кода, чтобы прочитать подпись вашего приложения:
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.ВСЛ.Кардиотренажер'. Это должно быть имя пакета, которое вы использовали в своем AndroidManifest.XML. Удачи
Марк
начиная с API 5, Вы можете использовать PackageManager.getInstallerPackageName (String). Из документации:
получить имя пакета приложения, установки пакета. Это определяет, с какого рынка пришел пакет.
чтобы получить пакет Android Market,этот пост может помочь.
из того, что я могу сказать, нет ничего, что приложение Market делает для "флага" приложения, чтобы сказать, что оно было загружено с рынка.
Я видел, что эта проблема подошла по-другому к другой библиотеке Android. AdMob Android SDK можно скачать и использовать бесплатно, как описано на их Вики. Эта библиотека обслуживает объявления, поэтому у них есть такое же желание, чтобы иметь возможность определить, тестируется ли приложение, которое в настоящее время работает разработчик или если он используется "в дикой природе". Их подход состоял в том, чтобы потребовать от разработчика установить атрибут "testing" в XML или вызвать их библиотеки "setTesting(boolean)", чтобы библиотека знала, какие объявления обслуживать. Это, очевидно, более ручной подход, который полагается на разработчика, чтобы изменить одну строку кода или XML перед публикацией.
вы можете по умолчанию настроить свою конфигурацию в рабочей среде и использовать пользовательский
Instrumentation
это устанавливает конфигурацию в среду тестирования. Intrumentation должны быть удалены перед публикацией на рынок Android.