刚刚开始玩Android,我正在尝试创建一个免费和付费版本的应用。我也是Java的新手,但我已经设法在Eclipse中创建一个简单的工作应用程序,它包含2个主要项目(一个用于免费版本,另一个用于付费版本)。
我还有一个包含共享代码(活动,资源,字符串等)的库项目,并由主项目引用。我想做的事情(这可能是错误的方法)是启用或禁用库代码中的内容,具体取决于我是运行免费还是付费版本。
例如,我在库项目中有一个Main活动,我想做类似的事情:
if (version == "free") //version would somehow be set by the main project
{
//disable a paid feature
}
显然,我需要以某种方式在库中解决我是否正在运行免费或付费的主项目,以便我可以在需要时启用/禁用功能。这样做的最佳方法是什么?例如,我可以在主项目中使用某种全局设置,并以某种方式在库项目中阅读 - 我不希望库项目了解主项目,如果这有意义吗?
我是一个快速学习,所以请随意指出我的任何文章的方向等。
答案 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;
}