我目前正在寻找一种方法将文件保存在设备的内部存储器中,然后通过邮件发送。为此,我使用 FileProvider
所以在Android Manifest上,我在清单中添加了这些行:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="exploration.syte.fr.sendbymail4.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
&#13;
在res / xml路径上,我添加了这个文件路径: paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="files" path="files/"/>
</paths>
&#13;
以下是我用来创建文件的代码 - 一个非常简单的文本文件,其中包含单词&#34; test&#34;。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String textToWrite = "test";
try {
File path = this.getFilesDir();
File file = new File(path, "myfile.txt");
String chemin = file.getAbsolutePath().toString();
Log.i("MainActivity", chemin);
Toast.makeText(this, chemin, Toast.LENGTH_LONG).show();
FileOutputStream fos = new FileOutputStream(file);
fos.write(textToWrite.getBytes());
fos.close();
//Toast.makeText(this, "File correctly saved", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Log.d("Main", "Exception", e);
}
try {
sendFile(this);
} catch (Exception e) {
Log.d("Main", "Exception", e);
}
}
&#13;
我用来通过电子邮件发送文件的代码
public static void sendFile(Context context){
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
String directory=(String.valueOf(context.getFilesDir())/*+File.separator+"directory"*/);
File file=new File(directory+File.separator+"myfile.txt");
Uri uri = FileProvider.getUriForFile(context, "exploration.syte.fr.sendbymail4.fileprovider", file);
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
}
&#13;
**我目前遇到的问题是:**
/data/user/0/exploration.syte.fr.sendbymail4/files/myfile.txt
我希望我的文件保存在:/data/data/exploration.syte.fr.sendbymail4/files/myfile.txt
如何正确保存文件,我该如何设置路径?
提前致谢!
答案 0 :(得分:0)
我将保存图像
(defun is-cube-p (n)
(let* ((real-root (expt n 1/3))
(real-root-int-part (round real-root))
(m (expt real-root-int-part 3)))
(= n m)))
file_provider_paths.xml
public static String saveImage(Context context, Bitmap finalBitmap) {
String root = context.getFilesDir().getAbsolutePath();
// String root = context.getCacheDir().getAbsolutePath();
File myDir = new File(root + subFolder);
if (!myDir.exists()) {
myDir.mkdirs();
}
File file = new File(myDir, dateFilenameFormat.format(new Date()) + ".jpg");
try {
FileOutputStream out = new FileOutputStream(file);
downScale(finalBitmap).compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
return file.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
并发送(从“缓存”或“文件”目录获取getFilesDir或getFilesDir)
<paths>
<cache-path name="cache" path="/" />
<files-path name="files" path="/" />
</paths>
}