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

问题描述 投票:0回答:1

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

我想在电子邮件中发送数据库的副本,我已经读过我需要将文件导出到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[]{ "[email protected]"});
    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" />
java android sqlite android-sqlite
1个回答
0
投票

String currentDBPath =“/ data /”+“mypackagename”+“/ databases /”+ DB_NAME;

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

© www.soinside.com 2019 - 2024. All rights reserved.