Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 SQLite应用内计费_Android_Sqlite_In App Billing - Fatal编程技术网

Android SQLite应用内计费

Android SQLite应用内计费,android,sqlite,in-app-billing,Android,Sqlite,In App Billing,我有一个测验应用程序,它用大约20个不同类别的问题填充sqlite数据库。我想实现应用内计费,这样如果有人购买Category1,那么这些问题将添加到数据库中,而不是其他问题。我的一些问题分为两类,所以让我们假设Category1和Category2 try { for (int n = 1; n < sqlString.length; n++) { db.execSQL("INSERT INTO " + DATABASE_TABL

我有一个测验应用程序,它用大约20个不同类别的问题填充sqlite数据库。我想实现应用内计费,这样如果有人购买Category1,那么这些问题将添加到数据库中,而不是其他问题。我的一些问题分为两类,所以让我们假设Category1和Category2

try {
            for (int n = 1; n < sqlString.length; n++) {

                db.execSQL("INSERT INTO " + DATABASE_TABLE + " VALUES ("
                        + sqlString[n] + ");");

            }
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }
等,然后如果它已经买了,我将实现一个方法,如

boolean[] catChecker = {cat1, cat2, cat3, etc....}
SQLite info = new SQLite(this);
info.open();
info.addQs(catChecker)
//this will pass the true and false boolean values for each method then 
//based on that I choose to implement or not
info.close();
然而,我不知道这是否是一个好方法。我不知道如何检查是否已经增加了价值(由于它与已购买的其他类别交叉)。我想光标最好是检查是否已经添加了值,但是如何让光标进行搜索

我认为实现这一目标的方法是

1) 我只创建一个字符串数组,其中包含与购买的问题相关联的字符串。 2) 我在上面的for循环中创建了一个if语句,用于检查字符串是否来自购买的类别 3) 我将值“null”赋予所有尚未购买的字符串,然后添加一个if语句,仅在sqlString[n]不为null时执行SQL


你们知道怎么做才是最好的吗?

有很多方法可以做到这一点,我想会有不止一个好的答案。如果您有一个服务器,您可以执行一些操作,例如返回授权数据库/字符串的列表等。您可以使用该列表引用不同的表。您还可以创建表或使用下载表的SharedReferences。这个名单还有很多


服务器选项将添加一层安全性。存储的表索引将更容易盗版,但也可能更容易实现,并使您能够脱机使用类别

您是否考虑过从一个完整的数据库开始(即包含任何人都可以购买的所有问题),然后删除那些不再适用的问题?

我没有能力使用服务器:/i我可能会坚持使用表或共享首选项,每周左右运行一次许可证检查或类似操作。我不想这样做,因为它更容易破解。我决定用if语句将每个问题都封装起来,每个类别都适用于它,如果问题没有被购买,它将保持为空。
boolean[] catChecker = {cat1, cat2, cat3, etc....}
SQLite info = new SQLite(this);
info.open();
info.addQs(catChecker)
//this will pass the true and false boolean values for each method then 
//based on that I choose to implement or not
info.close();