私は以下のコードのように作成したテキストファイルをたくさん作成します。これらのファイルを内部ストレージに保存しました。私の目標は、ListViewに表示することです。ユーザーが項目をクリックすると、その内容を意図した方法で開くか送信します(電子メールなど)。内部ストレージからインテント経由でテキストファイルを共有
static void testDispFiles (Context context) {
mContext = context;
String path = mContext.getFilesDir().getAbsolutePath();
Log.v(TAG, "testDisp path: " + path);
File dirFile = new File(path);
File[] files = dirFile.listFiles();
Log.v(TAG, "testDisp length: " + files.length);
for (File f: files) {
Log.v(TAG, "testDisp file: " + f.getName());
}
}
そして今、私は、例えばを通してそれを送信することによって、のいずれかのファイルを共有したい:
static void createFile (Context context) {
mTimeStamp = String.valueOf(System.currentTimeMillis()/1000);
try {
String fileName = "File_" + mTimeStamp + ".txt";
mContext = context;
mOutputStreamWriter = new
OutputStreamWriter(context.openFileOutput(fileName ,Context.MODE_PRIVATE));
String path = mContext.getFilesDir().getAbsolutePath();
Toast.makeText(mContext, "Creating file: " + path,
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
Log.e(TAG,"Error with creating file writer...");
e.printStackTrace();
}
}
static void writeToFileData(String dataToSave) {
try {
Toast.makeText(mContext, "Saving data to file: " + dataToSave, Toast.LENGTH_SHORT).show();
mOutputStreamWriter.write(dataToSave);
} catch (IOException e) {
Log.e(TAG,"Error with writing to file...");
e.printStackTrace();
}
}
static void closeFileWriter() {
try {
Toast.makeText(mContext, "Closing file... ", Toast.LENGTH_SHORT).show();
mOutputStreamWriter.close();
} catch (IOException e) {
Log.e(TAG,"Error with closing file writer...");
e.printStackTrace();
}
}
は、その後、私はこの(ないListViewの中だけで、今テスト用)のように、私のすべてのファイルを一覧表示しますEメール。インテント経由で内部ストレージからテキストファイルを送信するには?
//編集:
私はGmailアプリからのメッセージ「は、このファイルを追加することはできません」トーストを返す意思を作成します。
String path = mContext.getFilesDir().getAbsolutePath();
File f = new File(path);
File[] files = f.listFiles();
Uri data = Uri.fromFile(files[0]);
Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_STREAM,data);
i.setType("plain/text");
i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
i.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivity(i);
あなたは内部ストレージに文字列を格納するのにTinyDBを使用することができますし、それを得ることができます:TinyDB.class [ここ](HTTPS
は、その後の活動に私はこのような意図を経由してファイルを送信します://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo/blob/master/TinyDB.java) –
'FileProvider'を使用してください:https://developer.android.com/reference/android/support/ v4/content/FileProvider.html – CommonsWare
@CommonsWareこれを手伝ってもらえますか?私はFileProviderを使用しません。 – chebad