0

我想通过电子邮件发送我的应用程序的数据库文件。这使我更容易在错误情况下提供帮助。为此,我需要检索我的应用程序的安装文件夹。我怎样才能做到这一点,以便我可以发送我的数据库,它位于 APP-FOLDER\databases\mydb.db

谢谢

4

1 回答 1

0

希望,您正在询问策略或从哪里开始这样做。

您可以遵循几种方法,

1)将您的 db 文件保存到 sdcard,然后您可以使用它来发送邮件。您可以通过使用SQLiteDatabase.openOrCreateDatabase(String, SQLiteDatabase.CursorFactory) 并简单地"/sdcard/yrdatabase.db"作为第一个参数传递来实现这一点。

2)如果您不将其保存到 sdcard ,则只需将您的 db 文件移动到 sdcard。您可以使用以下代码实现此目的。(即将以下功能绑定到您的按钮或无论如何从您的应用程序中调用它)

public void copyDBToSDCard() {
    try {
        InputStream myInput = new FileInputStream("/data/data/com.yrproject/databases/"+DATABASE_NAME);

        File file = new File(Environment.getExternalStorageDirectory().getPath()+"/"+DATABASE_NAME);
        if (!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                Log.i("TAG","File creation failed for " + file);
            }
        }

        OutputStream myOutput = new FileOutputStream(Environment.getExternalStorageDirectory().getPath()+"/"+DATABASE_NAME);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0){
            myOutput.write(buffer, 0, length);
        }

        //Close the streams
        myOutput.flush();
        myOutput.close();
        myInput.close();
        Log.i("TAG","copied");

    } catch (Exception e) {
        Log.i("TAG","exception="+e);
    }

}

完成访问db文件后,您可以使用邮件功能进一步使用它。

于 2013-01-11T12:02:44.997 回答