Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android主项目和库项目-如何在项目之间传递设置_Android_Global - Fatal编程技术网

Android主项目和库项目-如何在项目之间传递设置

Android主项目和库项目-如何在项目之间传递设置,android,global,Android,Global,刚开始玩Android,我正在尝试创建一个免费和付费版本的应用程序。我也是Java新手,但我已经设法在Eclipse中创建了一个简单的工作应用程序,它由两个主要项目组成(一个是免费版本,一个是付费版本) 我还有一个库项目,其中包含共享代码(活动、资源、字符串等),并被主要项目引用。我想做的(这可能是错误的方法)是启用或禁用库代码中的内容,这取决于我运行的是免费版本还是付费版本 例如,我在图书馆项目中有一项主要活动,我想做如下工作: if (version == "free") //version

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

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

例如,我在图书馆项目中有一项主要活动,我想做如下工作:

if (version == "free") //version would somehow be set by the main project
{
   //disable a paid feature
}
显然,我需要在库中以某种方式确定我是在运行免费的还是付费的主项目,以便在需要时启用/禁用功能。最好的方法是什么?例如,我是否可以在主项目中使用某种全局设置,并在库项目中以某种方式阅读此内容-我不希望库项目了解主项目,如果这有意义的话


我学得很快,所以请随意为我指出任何文章的方向等。

好的,我设法解决了这个问题。在应用程序清单中,我只需设置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;
}

您的代码可以工作,但如果您使用相同的apk同时具有免费和付费(解锁)功能,我不确定将付费/免费标志存储在清单中是否是最佳解决方案。相反,我会在库项目中添加一个方法,允许任何项目设置应用程序是免费还是付费的标志

图书馆工程:

    void setAppPurchasedMode(boolean purchased)
    {
        appPurchased = mode;
    }
在您的库中,您可以检查vs此标志:

    if (appPurchased)
        // show unlocked content
因此,在您的主要项目中,如果应用程序已付费:

    Library.setAppPurchasedMode(true);

谢谢-这是一种享受,肯定比使用清单文件要好