Java 如何保存另一个android应用程序的sqlite db文件。?

Java 如何保存另一个android应用程序的sqlite db文件。?,java,android,android-sqlite,axis2,Java,Android,Android Sqlite,Axis2,我为我们公司的销售人员开发了一个应用程序。他们中的大多数人在农村地区进行销售,而且更多时候没有这些地区的信号。然后他们告诉我们他们将销售同步到服务器。但是更多的销售详细信息丢失了。 然后我尝试为我的应用程序开发第三方工具,将本地db文件保存到手机内存中。然后我们可以通过电子邮件获得它。下面是代码 try { File sd = Environment.getExternalStorageDirectory(); File data = Environmen

我为我们公司的销售人员开发了一个应用程序。他们中的大多数人在农村地区进行销售,而且更多时候没有这些地区的信号。然后他们告诉我们他们将销售同步到服务器。但是更多的销售详细信息丢失了。 然后我尝试为我的应用程序开发第三方工具,将本地db文件保存到手机内存中。然后我们可以通过电子邮件获得它。下面是代码

    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();希望这会有所帮助