在Android上,如何使用代码来区分使用相同库的免费应用程序与付费应用程序

Edd*_*ieH 3 android

我发现这篇关于使用图书馆付费与免费的文章.它特别提到了以下内容:"可能有一个布尔资源,指示付费或免费状态,可以通过库项目中的代码进行测试,并相应地打开或关闭功能.通常,库项目将具有默认的付费状态值资源,免费版本会将其覆盖为免费价值." 我怎样才能制作一个可以在免费版本中覆盖的布尔值?基本上我怎么能在我的公共库代码中做一些事情,说明app是免费版还是展示广告?

Tim*_*ell 5

一种方法是使用字符串资源文件 - 因为值是"级联".

库代码被复制到免费和付费项目中,并在该项目的上下文中运行,这意味着它首先查看"本地"字符串资源.

只要您还在库项目中指定了字符串资源名称,它就会编译,但在执行时会使用更多的"本地"值.

在库项目中,在res/values/strings.xml中指定名为"paid"的字符串

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
    <string name="app_name">My app</string>
    <string name="paid">false</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

在您的免费项目中,指定:

<string name="paid">false</string>
Run Code Online (Sandbox Code Playgroud)

在您的付费项目中,指定:

<string name="paid">true</string>
Run Code Online (Sandbox Code Playgroud)

您现在可以在库项目中访问它:

boolean paid = Boolean.parseBoolean(getString(R.string.paid));
Run Code Online (Sandbox Code Playgroud)

当您运行免费项目时,它将报告False,当您运行付费项目时,它将报告True.

然后你只需要检查那个布尔值和分支......

if(!paid) {
  //show an ad (or whatever)
}

if(paid) {
  //load more game levels (or whatever)
}
Run Code Online (Sandbox Code Playgroud)