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