小编Zhi*_*pan的帖子

如何在应用结算中隐藏非活动产品?

我们有一个支持In App Billing v3的Android应用程序.在我们的测试中,其他一切工作正常,但我们发现通过查询库存也可以获得非活动产品.

这就是我们在应用商品库存中查询Google Play的方式:

ArrayList<String> moreSkus = new ArrayList<String>();
moreSkus.add("gas");
moreSkus.add("premium");
mHelper.queryInventoryAsync(true, moreSkus, mGotInventoryListener);

...

IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
    public void onQueryInventoryFinished(IabResult result, final Inventory inventory) {
        if(inventory.hasDetails("premium")) {
            System.out.println("Inactive product is also visible to app!");
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

在这两个产品中,"premium"处于非活动状态,但IabHelper.QueryInventoryFinishedListener中的print语句仍然执行!

有没有办法只获得有效产品?

java android in-app-purchase in-app-billing google-play

5
推荐指数
1
解决办法
698
查看次数

Eclipse没有构建针对5.0 Lollipop的Android项目

我在Eclipse(Kepler)中使用SDK管理器更新了Android SDK.当我将构建目标更改为Android 5.0 Lollipop时,Eclipse不再构建项目.清理项目后,"gen"文件夹变为空,并且不再生成R.java和其他文件,尽管我已启用"自动构建".手动运行"Build Project"或"Build All"也不起作用.我不认为它是由源代码或资源文件错误引起的,因为当我将构建目标更改为任何较旧的Android版本(20及以下版本)时,它会再次开始构建.

SDK更新几乎包含所有内容,包括最新的构建工具(21.1.1),SDK工具(23.0.5),平台工具(21),当然还有Android 5.0(API 21)本身.我使用的计算机运行Windows Vista Home Premium SP2(32位).我也尝试在我的Mac上编译相同的项目,并没有那样的问题.

任何人都可以看到有什么问题?


2014年11月24日更新:

我在windows中打开了详细记录构建过程 - > Preferences - > Android - > Build - > Build output - verbose.启用"自动构建"并且Android构建目标为5.0(级别21),我只有两行输出:

删除生成的java类.
开始完整的包构建.

但是,当我将构建目标更改为Android 4.4.2(级别19)时,输出非常长.


2014年12月1日更新:

感谢@sagis,我现在可以构建针对Android 5.0的Android项目.起初我只尝试更改"已安装的JRE"和"编译器"首选项,但它不起作用.所以sagis是对的,我不得不卸载现有的JRE(我实际上也卸载了JDK).

我在此过程中遇到的其他问题:

  1. 卸载JRE后,Eclipse无法启动.使用此SO线程中的解决方案解决了问题.
  2. 将项目特定的Java编译器版本更改为1.8将不起作用.这意味着您必须选中"启用项目特定设置"(右键单击项目名称 - > Java编译器),然后选择除1.8之外的项目特定"编译器合规级别".

java eclipse android android-build android-5.0-lollipop

4
推荐指数
1
解决办法
4123
查看次数