Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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
Java 在不同程序包/应用程序之间保存数据_Java_Android_Sharedpreferences - Fatal编程技术网

Java 在不同程序包/应用程序之间保存数据

Java 在不同程序包/应用程序之间保存数据,java,android,sharedpreferences,Java,Android,Sharedpreferences,我有一个免费和付费的应用程序。如果用户首先尝试免费版本并获取例如10黄金,然后升级到付费版本,我希望他保留这些10黄金,而不是重新开始 那么,有没有办法在应用程序之间共享和访问数据呢?我不想把它保存到SD卡的根目录,因为用户可以很容易地修改它。我认为一些开发者通过使用他们的付费应用程序来规避这个问题,只是为了检查付款情况(如果安装了,你已经付了钱)并将所有内容(代码方面)都保存在免费版本中。您还可以对写入SD卡的数据进行加密/解密。这还可以让用户更容易地备份/恢复这些保存(如果重新安装应用程序或

我有一个免费和付费的应用程序。如果用户首先尝试
免费版本
并获取例如
10黄金
,然后升级到付费版本,我希望他保留这些
10黄金
,而不是重新开始


那么,有没有办法在应用程序之间共享和访问数据呢?我不想把它保存到SD卡的根目录,因为用户可以很容易地修改它。

我认为一些开发者通过使用他们的付费应用程序来规避这个问题,只是为了检查付款情况(如果安装了,你已经付了钱)并将所有内容(代码方面)都保存在免费版本中。您还可以对写入SD卡的数据进行加密/解密。这还可以让用户更容易地备份/恢复这些保存(如果重新安装应用程序或类似的内容,则不会丢失任何内容)。

您可以在应用程序数据文件夹中创建一个文件。保存在那里

 /data/data/your_complete_package/your_data_filename
当然,你需要用这款手机特有的东西对它进行加密

因此,他们将无法将此文件移动到另一部手机上使用


请注意,app data文件夹下的文件将与您的应用程序一起卸载。

我认为Android内容提供商可以解决此问题:

内容提供商管理对结构化数据集的访问。它们封装数据,>并提供定义数据安全性的机制。内容提供者是标准的>接口,它将一个进程中的数据与另一个进程中运行的代码连接起来

你的应用程序可以实现ContentProvider并导出你需要共享的数据uri,而你的免费付费版本可以通过ContentProvider共享数据,就像你访问谷歌合同一样


顺便说一句,ContentProvider支持SQLite和XML,这意味着您可以根据需要将其存储在内存或sd卡中。

我的解决方案是维护某种远程服务器,为用户保存所有数据。用户在进入应用程序时登录,通过服务器进行身份验证,并使其所有数据可用

任何局部解决方案都不是持久的。如果用户的应用程序被删除怎么办?如果手机损坏且应用程序无法恢复

作为任何应用程序的付费用户,我希望我的付费数据能够通过不同的设备进行移植


在这件事上只花我2美分…

听起来是个好主意!但我如何让免费版本检查是否有付费版本呢?首先是谷歌:但总的来说,想想你希望你的用户如何管理他们的savegames(或者我们正在谈论的任何东西)。您是否希望他们丢失/无法传输其存储?我猜在sd卡上保存加密的数据文件仍然是最好的方法。好吧,我想这听起来似乎是合理的