电子邮件数据库无法正常工作

时间:2017-12-31 00:18:19

标签: java android sqlite android-sqlite

!!我已经意识到问题在于电子邮件,它没有做我认为的事情。我想安排电子邮件每天发生,因此需要自动完成。 !!

我想在电子邮件中发送数据库的副本,并且我已经读过我需要将文件导出到SD卡然后能够通过电子邮件发送,这是我已经完成的但是我得到一个"没有应用程序执行此操作"我尝试运行它时出错。我使用的是启用了SD的Android模拟器。

public void sendEmail(View view){

    Intent email = new Intent(Intent.ACTION_SEND);
    email.putExtra(Intent.EXTRA_SUBJECT, "Daily Records");
    email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "someemail@yahoo.com"});
    File sd = Environment.getExternalStorageDirectory();
    File data = Environment.getDataDirectory();
    FileChannel source=null;
    FileChannel destination=null;
    String DB_NAME = "inoutDB.db";
    String currentDBPath = "/data/"+ "mypackagename" +"/databases/"+DB_NAME;
    String backupDBPath = DB_NAME;
    File currentDB = new File(data, currentDBPath);
    File backupDB = new File(sd, backupDBPath);
    try {
        source = new FileInputStream(currentDB).getChannel();
        destination = new FileOutputStream(backupDB).getChannel();
        destination.transferFrom(source, 0, source.size());
        source.close();
        destination.close();
        email.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(backupDB));
    } catch(IOException e) {
        e.printStackTrace();

    }

    startActivity(Intent.createChooser(email, "Send Email"));
}

我已在我的清单中添加了权限部分

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

1 个答案:

答案 0 :(得分:0)

String currentDBPath =&#34; / data /&#34; +&#34; mypackagename&#34; +&#34; /数据库/&#34 + DB_NAME;

这是错误的。首先路径是错误的(应用程序通常安装在/ data / data中,尽管OEM可以决定改变它)。其次,你不应该在Android使用context.getDatabasePath(DB_NAME)中假设路径。