带有库项目的Android主项目 - 如何在项目之间传递设置

时间:2012-02-13 22:42:13

标签: android global

刚刚开始玩Android,我正在尝试创建一个免费和付费版本的应用。我也是Java的新手,但我已经设法在Eclipse中创建一个简单的工作应用程序,它包含2个主要项目(一个用于免费版本,另一个用于付费版本)。

我还有一个包含共享代码(活动,资源,字符串等)的库项目,并由主项目引用。我想做的事情(这可能是错误的方法)是启用或禁用库代码中的内容,具体取决于我是运行免费还是付费版本。

例如,我在库项目中有一个Main活动,我想做类似的事情:

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

显然,我需要以某种方式在库中解决我是否正在运行免费或付费的主项目,以便我可以在需要时启用/禁用功能。这样做的最佳方法是什么?例如,我可以在主项目中使用某种全局设置,并以某种方式在库项目中阅读 - 我不希望库项目了解主项目,如果这有意义吗?

我是一个快速学习,所以请随意指出我的任何文章的方向等。

2 个答案:

答案 0 :(得分:2)

您的代码有效,但我不确定如果您使用相同的apk同时具有免费和付费(解锁)功能,则在您的清单中存储您的付费/免费标记是最佳解决方案。相反,我会通过在库项目中添加一个方法来执行此操作,该方法允许任何项目设置应用程序是免费还是付费的标记。

来自图书馆项目:

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

在您的图书馆中,您可以查看此标志:

    if (appPurchased)
        // show unlocked content

因此,在您的主项目中,如果应用已付款:

    Library.setAppPurchasedMode(true);

答案 1 :(得分:1)

好的,我设法解决了这个问题。在Application Manifest中,我只需设置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;
}