Основной проект Android с проектом библиотеки - как передать настройки между проектами - PullRequest
2 голосов
/ 14 февраля 2012

Только что начал играть с Android, и я пытаюсь создать приложение с бесплатной и платной версией. Я также новичок в Java, но мне удалось создать простое рабочее приложение в Eclipse, которое состоит из 2 основных проектов (один для бесплатной версии и один для платной версии).

У меня также есть проект библиотеки, который содержит общий код (действия, ресурсы, строки и т. Д.), На который ссылаются основные проекты. То, что я хочу сделать (и это может быть неправильный подход), это включить или отключить вещи в коде библиотеки в зависимости от того, использую ли я бесплатную или платную версию.

Так, например, у меня есть основной вид деятельности в проекте библиотеки, и я хочу сделать что-то вроде:

if (version == "free") //version would somehow be set by the main project
{
   //disable a paid feature
}

Очевидно, мне нужно как-то разобраться в библиотеке, работаю ли я с бесплатным или платным основным проектом, чтобы я мог включать / отключать функции, когда мне это нужно. Какой лучший подход для этого? Например, могу ли я использовать какие-то глобальные настройки в основном проекте и как-то прочитать это в проекте библиотеки - я не хочу, чтобы проект библиотеки знал о главном проекте, если это имеет смысл?

Я быстро учусь, поэтому не стесняйтесь указывать мне направление на любые статьи и т. Д.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Ваш код работает, но я не уверен, что сохранение вашего оплаченного / бесплатного флага в вашем манифесте - лучшее решение, если вы используете один и тот же apk для предоставления как платных, так и бесплатных (разблокирующих) функций.Вместо этого я бы сделал это, добавив метод в проект библиотеки, который позволяет любому проекту установить флаг, является ли приложение бесплатным или платным.

ex в проекте библиотеки:

    void setAppPurchasedMode(boolean purchased)
    {
        appPurchased = mode;
    }

и в вашей библиотеке вы можете проверить этот флаг:

    if (appPurchased)
        // show unlocked content

Так что в вашем основном проекте, если приложение было оплачено:

    Library.setAppPurchasedMode(true);
1 голос
/ 28 февраля 2012

ОК, мне удалось решить это. В манифесте приложения я просто установил свойство android: label и сослался на него, используя приведенный ниже код.

В манифесте:

android:label="My Free App"

Для справки

//Are we using free or pro version?
if (this.getApplication().getApplicationInfo().loadLabel(this.getPackageManager()).toString().equals("My Free App")) 
{
freeVersion = true;
} else {
freeVersion = false;
}
...