!!我已经意识到问题在于电子邮件,它没有做我认为的事情。我想安排电子邮件每天发生,因此需要自动完成。 !
我想在电子邮件中发送数据库的副本,我已经读过我需要将文件导出到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" />
String currentDBPath =“/ data /”+“mypackagename”+“/ databases /”+ DB_NAME;
这是错的。首先路径是错误的(应用程序通常安装在/ data / data中,尽管OEM可以决定改变它)。其次,您不应该在Android使用context.getDatabasePath(DB_NAME)中假设路径。