Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
如何在android中从我的应用程序文件夹中检索文件?_Android - Fatal编程技术网

如何在android中从我的应用程序文件夹中检索文件?

如何在android中从我的应用程序文件夹中检索文件?,android,Android,我想通过电子邮件发送我的应用程序的数据库文件。这使得在错误情况下更容易提供帮助。为此,我需要检索我的应用程序的安装文件夹。我如何才能做到这一点,以便我可以发送我的数据库,该数据库位于APP-FOLDER\databases\mydb.db 谢谢希望,您正在询问有关战略或从何处着手的问题 有几种方法可以遵循 1) 将您的db文件保存到SD卡中,然后您就可以使用它进行邮寄了。您可以通过使用SQLiteDatabase.openOrCreateDatabase(String,SQLiteDatabas

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


谢谢希望,您正在询问有关战略或从何处着手的问题

有几种方法可以遵循

1) 将您的db文件保存到SD卡中,然后您就可以使用它进行邮寄了。您可以通过使用
SQLiteDatabase.openOrCreateDatabase(String,SQLiteDatabase.CursorFactory)
并将
“/sdcard/yrdatabase.db”
作为第一个参数来实现这一点

2) 如果不将其保存到SD卡,则只需将db文件移动到SD卡即可。您可以通过使用以下代码来实现这一点。(即,将以下功能绑定到您的按钮上,或从应用程序中调用)


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

朋友,有很多代码可以执行此操作,只需进行适当的谷歌搜索,您就可以获得代码。我不会在这里问问题,之前没有搜索过!!感谢您的回复,想想当应用程序被移动到SD卡时会发生什么?那么这就行不通了,或者?当应用程序移动时,Google Doc说:“.apk文件保存在外部存储器上,但所有私人用户数据、数据库、优化的.dex文件和提取的本机代码都保存在内部设备存储器上。”有关更多详细信息,您可以参考此链接。我的荣幸。如果有帮助,你可以接受这个答案。
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);
    }

}