【问题标题】:Android main project with library project - how to pass setting between projects带有库项目的Android主项目-如何在项目之间传递设置
【发布时间】:2012-02-13 22:42:13
【问题描述】:

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

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

例如,我在图书馆项目中有一个主要活动,我想做一些类似的事情:

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

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

我是一个快速学习的人,所以请随时为我指明任何文章等的方向。

【问题讨论】:

    标签: android global


    【解决方案1】:

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

    库项目中的前:

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

    在你的库中,你可以检查 vs 这个标志:

        if (appPurchased)
            // show unlocked content
    

    所以在你的主项目中,如果应用已经付费:

        Library.setAppPurchasedMode(true);
    

    【讨论】:

    • 谢谢 - 比使用清单文件效果更好
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多