Java 如何保存另一个android应用程序的sqlite db文件。?
我为我们公司的销售人员开发了一个应用程序。他们中的大多数人在农村地区进行销售,而且更多时候没有这些地区的信号。然后他们告诉我们他们将销售同步到服务器。但是更多的销售详细信息丢失了。 然后我尝试为我的应用程序开发第三方工具,将本地db文件保存到手机内存中。然后我们可以通过电子邮件获得它。下面是代码Java 如何保存另一个android应用程序的sqlite db文件。?,java,android,android-sqlite,axis2,Java,Android,Android Sqlite,Axis2,我为我们公司的销售人员开发了一个应用程序。他们中的大多数人在农村地区进行销售,而且更多时候没有这些地区的信号。然后他们告诉我们他们将销售同步到服务器。但是更多的销售详细信息丢失了。 然后我尝试为我的应用程序开发第三方工具,将本地db文件保存到手机内存中。然后我们可以通过电子邮件获得它。下面是代码 try { File sd = Environment.getExternalStorageDirectory(); File data = Environmen
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
Toast.makeText(getApplicationContext(), "SD Card Detecting ", Toast.LENGTH_SHORT).show();
if (sd.canWrite()) {
Toast.makeText(getApplicationContext(), "Backup is writing to SD card", Toast.LENGTH_SHORT).show();
String currentDBPath = "//data//com.lk.lankabell.android.activity//databases//TSRDBNEW";
String backupDBPath = "TSRDBNEW-Backup";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getApplicationContext(), "Backup is successful to SD card", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Backup is un-success to SD card", Toast.LENGTH_SHORT).show();
}
我使用了我的主应用[android+ksoap+axis2]技术
请建议我实现这个。我尝试了上面的代码。但它不工作。它也需要sd卡。我的数据库url有问题吗
您无法如此轻松地从任何应用程序的数据“私人”文件夹中“获取”文件。最好的方法是,在创建/更新/删除数据库中的类时,创建一个新的查询,获取所需信息,将其保存为字符串,然后以txt文件、json文件或所需的某种格式保存在sdcard中。使用CSV格式可能是一个可行的解决方案(如果没有DB模型,就做不到更多):
public void generateTXTOnSD(String[] lines_txt)
{
// lines_txt contains an array of each register in CSV format.
try
{
File root = new File(Environment.getExternalStorageDirectory(),"NameOfDirectoryYouWantToSave");
if (!root.exists())
{
root.mkdirs();
}
Calendar cal = Calendar.getInstance();
// I made this to no override early versions of data I have stored.
String hour= String.valueOf(cal.get(cal.HOUR_OF_DAY))+"_"+String.valueOf(cal.get(cal.MINUTE))+"_"+String.valueOf(cal.get(cal.SECOND));
File txtfile = new File(root, name_txt+hour+".txt");
FileWriter writer = new FileWriter(txtfile);
//Every line contain the info you want to save
for (String line_txt : lines_txt) {
writer.append(line_txt);
writer.append('\r');
writer.append('\n');
}
writer.flush();
writer.close();
}
catch(IOException e)
{
// ERROR
}
}
希望这有帮助。尝试使用以下方法获取数据库路径:编辑:我错过了一个重要细节:是同一个应用程序。一个好的选择是使用数据库中的SQLiteOpenHelper,然后使用适配器进行查询。亲爱的LuS,我必须在其中添加代码片段。请添加作为答案。?@PriyanRockZ替换字符串currentDBPath=。。。with:File dbFile=getApplicationContext().getDatabasePath(“TSRDBNEW”);然后字符串currentDBPath=dbFile.getAbsolutePath();希望这会有所帮助