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

Как я могу создавать плагины/расширения Android-приложений, которые могут быть установлены как APK или с рынка?

Я действительно изучаю возможность иметь приложение, которое удовлетворяет следующим требованиям:

  • Основное приложение может иметь 5 деактивированных функций
  • Если вы попытаетесь использовать дезактивированную функциональность, приложение предложит вам загрузить расширение, которое может быть установлено как APK или с рынка.
  • После того, как функциональность установлена, она активируется, а затем ее можно использовать.

Таким образом, мы можем иметь некоторые свободные/не бесплатные функции. Я уже видел такое поведение в некоторых приложениях, но я не помню имя.

Есть ли что-то в Android SDK для использования? как это можно реализовать?

Спасибо за вашу помощь.

4b9b3361

Ответ 1

Не уверен, что это то, что вы ищете, но позвольте мне предложить что-то, чтобы вы начали (возможно)

Для примера, скажем, в вашем приложении, например, у вас есть 2 кнопки (вместо 5)

КНОПКА 1 и КНОПКА 2.

Когда вы запускаете свое приложение, проверьте, установлены или нет необходимые приложения (стороннее приложение для вашего собственного приложения) с помощью PackageManager

Это псевдокод, который я использую в своем приложении, чтобы проверить, установлены ли Google Maps на устройстве пользователя:

boolean installedMaps = false;

// CHECK IF AN APPLICATION IS INSTALLED
PackageManager pkManager = getPackageManager();
try {
    PackageInfo pkInfo = pkManager.getPackageInfo("com.google.android.apps.maps", 0); // REPLACE THIS "com.google.android.apps.maps" WITH THE ACTUAL PACAKAGE NAME
    // Log.e("pkInfo", pkInfo.toString());
    installedMaps = true;
} catch (NameNotFoundException e) {
    e.printStackTrace();
    installedMaps = false;
}

Если boolean installedMaps возвращает true, включите эту кнопку. В противном случае попросите пользователя с помощью диалогового окна загрузить приложение из Google Play.

И сделайте это для каждой функции, которую необходимо активировать или деактивировать.

ПРИМЕЧАНИЕ. Для этого вам нужно будет узнать имя пакета другого приложения. Если вы этого не знаете, его можно найти, запустив приложение на вашем устройстве и проверив logcat.

Если вам также необходимо поделиться Контентом между всеми заинтересованными приложениями, вы можете также рассмотреть возможность использования Content Providers

Опять же, я не совсем уверен, что это то, что вы ищете. Пожалуйста, сделайте правильный, если я ошибаюсь в своем предположении.

Ответ 2

Вы можете создать apks с сервисом и использовать http://developer.android.com/guide/components/aidl.html для подключения к этой службе. И эта услуга может делать то, что вы хотите, только ваше воображение - ваш предел;-)

Я рекомендую прочитать об этом: http://developer.android.com/guide/topics/manifest/manifest-element.html#uid можно предоставить больше данных между 2 и более приложениями. Но их нужно называть одним ключом.

Ответ 3

Вам нужно создать 6 различных приложений /apks и отправить их в Play Store. И есть как минимум 2 варианта интеграции приложений:

  • Если ваша функциональность занимает весь экран, вы можете просто запускать соответствующие действия из приложений плагинов.
  • Если главный экран (один из основного приложения) должен включать код (функциональность), ресурсы из приложений плагина (макеты, изображения и т.д.), чем смотреть http://developer.android.com/guide/topics/manifest/manifest-element.html#uid. Используя эту конфигурацию, вы можете получить доступ к коду из приложения плагина с отражением по имени класса.

Вы также можете получить доступ к ресурсам из другого apk, используя Ресурсы res = mPackageManager.getResourcesForApplication( "org.example.foo" ); обратитесь к Возможно ли получить доступ к ресурсам в другой APK без использования поставщиков контента? для получения более подробной информации.

Ответ 4

Прежде всего - что именно вы подразумеваете под "дополнительными функциями". Проблема довольно сложная.

  • Проверяйте наличие приложения existanece - просто используйте PackageManager и попробуйте найти нужный пакет, если он его использует, если не запрашивать у пользователя установку.
  • Доступ к ресурсам (изображения, макеты и т.д.) - также с PackageManager
  • Используйте некоторые части кода - много разных способов получить эффект. Intents (startActivityForResult()), поставщики контента.

Вероятно, лучший подход к внедрению бесплатных/платных функций - это просто оплата в приложениях.