如何在卸载应用程序后永久使用sharedPreference存储值

时间:2014-07-31 07:18:02

标签: android in-app-purchase sharedpreferences

我正在开发Android中的In-App Prurchase。购买一个项目后,我使用Android中的共享首选项Api将布尔值设置为true。它工作正常。一旦我卸载并重新安装我的应用程序,它就会使布尔值为false。这是我的代码:

boolean  buyUfo = false;
private static final String BUYUFO ="buyUfo";

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preference);

    sharedPreference = this.getSharedPreferences(SHARED_PREFERENCE_ID, MODE_PRIVATE);
    buyUfo = sharedPreference.getBoolean(BUYUFO, false);
     }

   //After In-App Purchase, when finish listener is called.
   IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener1 = new IabHelper.OnIabPurchaseFinishedListener() {
                public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
                    Log.d("ufo", "Purchase finished: " + result + ", purchase: " + purchase);
                   if (result.isFailure()) {
                        if (result.getResponse() == IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
                            Editor editor = sharedPreference.edit();
                            editor.putBoolean(BUYUFO, true);
                            editor.commit();

                            return;
                        }
                     }

我希望这个价值永远适用于那些购买商品的人吗?..请帮忙

5 个答案:

答案 0 :(得分:1)

Storage options android。我建议您在服务器中保存敏感数据(也是谷歌推荐的)。在设备中,您可以将数据保存在共享首选项中(在卸载时删除根设备中不安全)或内部存储(卸载时删除)或外部存储和sqlite数据库。无论您选择何种数据都是敏感数据,都要对其进行加密。

注意没有可靠的方法来保存多个安装之间持续存在的设备中的数据。如果将其保存在外部存储器中,则总是容易被用户删除。

答案 1 :(得分:1)

您可以将它存储在sdCard上,制作相同的文件。但也可以在外部删除。

关注您:关注:
我希望这个值始终适用于那些购买商品的人吗?
 通过应用内购买,购买商品后,您确实无需存储是否已购买。 API会为您完成,您可以通过它获取特定ID的项目状态。

  

检索用户所拥有的产品列表,即您的应用程序   向Google Play发送getPurchases电话。你的申请可以成为   通过发送consumePurchase调用消费请求。在请求中   参数,您必须指定应用内商品的唯一purchaseToken   购买时从Google Play获得的字符串。   Google Play会返回一个状态代码,指示消费情况   录得成功。

了解更多信息:
Consuming In-app Products, In-app Billing V3

OR
RESTORE_TRANSACTIONS in V2

答案 2 :(得分:0)

那是不可能的。如果您尝试以这种方式实现,用户将通过手动编辑SharedPreferences来滥用您的系统。

用户可以随时清除手机记忆库。你不应该依赖它。相反,在后端保存价值,如果用户重新安装应用程序,请检查它是否是同一个用户。

答案 3 :(得分:0)

您必须存储除sharedprefrence之外的此值,sharedprefrences是特定于应用程序的,并且在您卸载并重新安装应用程序时会删除它们。 您可以做的是将此值存储在服务器上,当用户再次安装应用程序时,您可以检索该值并根据其值进行操作

答案 4 :(得分:0)

sharedPreference上保存购买信息不正确。您应该查询服务器以检查用户是否已购买该项目。