从在线数据库同步后从 android 应用程序获取 sqlite 数据库
Posted
技术标签:
【中文标题】从在线数据库同步后从 android 应用程序获取 sqlite 数据库【英文标题】:Get sqlite database from android app after sync from online database 【发布时间】:2017-02-02 03:48:52 【问题描述】:我有一个带有预置数据库的安卓应用程序,我可以破解预置数据,但是在与在线服务器同步后,我仍然得到旧数据库。我认为新数据存储在内存中,而不是写入存储在资产中的数据库。 如何获取实时 sqlite 数据库,同步后应用当前正在使用。
【问题讨论】:
到目前为止,您尝试了什么?如何提问***.com/help/how-to-ask 您的意思是从当前正在使用的设备中提取数据库? 是的,我可以提取在构建应用程序期间放置的旧数据库,但如果我想获取最新的同步数据,我无法获取 @gopal_patil 在您的问题中使用代码 sn-ps 更新您的同步过程。 我已经反编译了应用程序,所以他们的同步活动是使用一些 ncryption 来获取数据,获取数据的唯一方法是在插入 sqlite 之后 【参考方案1】:比较新旧数据库中可能发生变化的所有对象。删除不存在的记录,插入新记录。
或者只是删除旧数据库,然后下载新数据库作为替换。
【讨论】:
感谢您的回复,但我已经反编译了应用程序,因此无法更改代码,只能以某种方式从内存中获取 sqlite【参考方案2】:通过拉取该文件,您将无法获取新数据。 你可以试试这个,它会读取你的数据并从中创建新文件。
public boolean backUpDB()
String currentDBPath = ""; //db path
+ "DB_NAME";
File data = Environment.getDataDirectory();
if (isExternalStorageAvailable())
File folder;
folder = new File(
context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
+ "/backup_path/");
if (!folder.exists())
folder.mkdir();
String path = folder + "";
File SDPath = new File(path);
if (!SDPath.exists())
SDPath.mkdir();
try
File currentDB = new File(data, currentDBPath);
InputStream input = new FileInputStream(currentDB);
byte dataa[] = new byte[input.available()];
input.read(dataa);
OutputStream out = new FileOutputStream(path + "/"
+ "DB_NAME");
out.write(dataa);
out.flush();
out.close();
input.close();
catch (Exception e)
Commons.printException("exception," + e + "");
return false;
return true;
else
return false;
【讨论】:
以上是关于从在线数据库同步后从 android 应用程序获取 sqlite 数据库的主要内容,如果未能解决你的问题,请参考以下文章
从 android 应用程序共享后从 google plus 注销
我希望我的Android应用程序将数据同步到MYSQL以用于我的在线ERP