我的目标是在内部存储上创build一个XML文件,然后通过共享意图发送。 我能够使用此代码创build一个XML文件 FileOutputStream outputStream = context.openFileOutput(fileName, Context.MODE_WORLD_READABLE); PrintStream printStream = new PrintStream(outputStream); String xml = this.writeXml(); // get XML here printStream.println(xml); printStream.close(); 我卡住试图检索到输出文件的Uri,以分享它。 我第一次尝试通过将文件转换为Uri来访问该文件 File outFile = context.getFileStreamPath(fileName); return Uri.fromFile(outFile); 这将返回file:///data/data/com.my.package/files/myfile.xml,但我不能将其附加到电子邮件,上传等。 如果我手动检查文件的长度,这是正确的,并显示有一个合理的文件大小。 接下来,我创build了一个内容提供者,并试图引用该文件,而不是该文件的有效句柄。 ContentProvider似乎从未被称为任何一点。 Uri uri = Uri.parse("content://" + CachedFileProvider.AUTHORITY + "/" + fileName); return uri; 这将返回content://com.my.package.provider/myfile.xml,但是我检查文件,它的长度为零。 如何正确访问文件? 我是否需要与内容提供者创build文件? 如果是这样,怎么样? 更新 这是我用来分享的代码。 如果我selectGmail,它显示为附件,但是当我发送给出错误时无法显示附件,并且到达的电子邮件没有附件。 public void […]
试图打开文件时,应用程序崩溃。 它在Android N下工作,但在Android N上崩溃。 它只是当我试图从SD卡,而不是从系统分区打开文件崩溃。 一些权限问题? 示例代码: File file = new File("/storage/emulated/0/test.txt"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "text/*"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); // Crashes on this line 日志: android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData() 编辑: 在定位Android N时, file:// URI不再被允许。 我们应该使用content:// URI来代替。 但是,我的应用程序需要打开根目录中的文件。 有任何想法吗?
这一行: final FileOutputStream outputStream = new FileOutputStream(name); 导致FileNotFoundException ,消息是/2ozjfFQzwv: open failed: EROFS (Read-only file system)其中“2ozjfFQzwv”是我作为文件的名称传递的。 我已经试过这个和没有WRITE_INTERNAL_STORAGE权限。 我如何创build这个文件的写作? 另外,我只是希望能够给一个新的活动提供一个图像,而且它太大而无法在一个额外的序列化中。 有没有比写入文件,然后再读取一个更简单的方法? 这里的所有问题似乎都是关于写入SD卡,我不想这样做,因为很多人没有SD卡插槽。
我需要通过使用文件名而不是从资源ID显示图像。 ImageView imgView=new ImageView(this); imgView.setBackgroundResource(R.drawable.img1); 我在可绘制的文件夹中有图像img1。 我希望从文件中显示图像如何做到这一点。