我看到處處都找不到,我無法找到如何做到這一點;我很沮喪...從應用程序內發送SQLite數據庫文件
我如何允許用戶發送(通過電子郵件)的SQLite數據庫文件?
就是這樣。我可以將其轉換爲字符串並附加,但我想發送實際的數據庫文件。而且我正在使用一款沒有外置SD卡的新手機。
該應用程序只是用戶填寫的表單,然後將其保存到SQLite數據庫。這很奇妙。就像將數據庫打印到字符串(文本)然後發送它一樣。但是,我希望用戶通過電子郵件發送實際的數據庫文件(這樣我就可以使用C#讀取,處理它,並「重新創建」一個真實的表單)。
或者我應該使用SQLite以外的東西?
編輯:這是我所做的。它似乎工作,但它實際上並沒有附加文件或文件是「空白/空」。調試日誌說沒有這樣的文件或目錄。在這裏調試日誌截圖:http://imgur.com/oyzdtuJ
//trying again to send a SQL db file
//this seems to work and shows that it's attaching a file, but the file is empty so it won't attach
//gmail will say "cant attach empty file"
private void sendFile(String email){
File myFile = this.getFileStreamPath("testresults.db");
if(myFile != null) {
Log.d("LOG PRINT SHARE DB", "File Found, Here is file location: " + myFile.toString());
}else {
Log.w("Tag", "file not found!");
}
Uri contentUri = FileProvider.getUriForFile(this, "com.columbiawestengineering.columbiawest.MainActivity", myFile);
Log.d("LOG PRINT SHARE DB", "contentUri got: here is contentUri: " + contentUri.toString());
//grant permision for app with package "com.columbiawestengineering.columbiawest", eg. before starting other app via intent
this.grantUriPermission("com.columbiawestengineering.columbiawest", contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
Log.d("LOG PRINT SHARE DB", "permission granted, here is contentUri: " + contentUri.toString());
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("application/octet-stream");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "blaaa subject");
String to[] = { email };
shareIntent.putExtra(Intent.EXTRA_EMAIL, to);
shareIntent.putExtra(Intent.EXTRA_TEXT, "blah blah message");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
startActivityForResult(Intent.createChooser(shareIntent, "Send mail..."), 1252);
//revoke permisions
this.revokeUriPermission(contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
要「獲取」db文件的Java代碼?它主要是用戶輸入文本,複選框等,所以它不是那麼大。 –
雖然我仍然對電子郵件持謹慎態度,但一些電子郵件客戶端和服務器對於允許的數據量有限制等。如果您可以使用Web服務作爲首選路由,如果不是,那麼您正在查看電子郵件或FTP等 – Harry
我們有我們自己的電子郵件客戶端和服務器,所以它沒關係。該文件非常小(實際文本很少)。但我似乎無法得到實際的數據庫文件發送。哎呀,我甚至不能參考它。我現在很沮喪。 –