私はどこにでも見えましたが、これを行う方法がわかりません。私はとてもイライラしています...アプリケーション内からSQLite dbファイルを送信
SQLite dbファイルを(電子メールで)送信する方法を教えてください。
これは簡単なことです。私はそれを文字列に変換して添付することができますが、実際のdbファイルを送信したいと思います。私は外部のSDカードを持たない新しい電話を使用しています。
このアプリケーションは、ユーザーが入力したフォームにすぎず、SQLiteデータベースに保存されます。それは素晴らしいことです。 dbを文字列(テキスト)に出力してから送信します。しかし、私は実際のdbファイルを電子メールで送信したい(私はC#を使用してそれを読み込み、処理し、実際のフォームを "再作成"することができます)。
また、SQLite以外のものを使用する必要がありますか?
編集:これは私が作った限りです。それは動作するようですが、実際にファイルを添付していないか、またはファイルが "空白/空"です。デバッグログにそのようなファイルやディレクトリはありません。ここでは、デバッグログのスクリーンショット:
//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
私たちは独自のメールクライアントとサーバーを持っているので大丈夫です。ファイルは実際には小さいです(実際のテキストはほとんどありません)。しかし、実際のdbファイルを送信することはできません。ヘック、私はそれを参照するように見えることができません。私は今これでとても不満です。 –