Android 如何通过Intnet发送从base64转换的PDF?

Android 如何通过Intnet发送从base64转换的PDF?,android,pdf,android-intent,base64,Android,Pdf,Android Intent,Base64,我在base64中得到了pdf文件,我对其进行了解码,通过Intent发送,但不幸的是外部应用程序无法读取它Evernote,例如说它无法打开空文件。另一件奇怪的事是,在转换后的列表中,我没有像Adobe Reader或Messanger这样的应用程序。这是我的代码: FileOutputStream fos; fos = context.openFileOutput("doc.pdf", Context.MODE_PRIVATE); String fileB64 = url.split(","

我在base64中得到了pdf文件,我对其进行了解码,通过Intent发送,但不幸的是外部应用程序无法读取它Evernote,例如说它无法打开空文件。另一件奇怪的事是,在转换后的列表中,我没有像Adobe Reader或Messanger这样的应用程序。这是我的代码:

FileOutputStream fos;
fos = context.openFileOutput("doc.pdf", Context.MODE_PRIVATE);
String fileB64 = url.split(",")[1];
byte[] decodedStr = Base64.decode(fileB64, Base64.NO_WRAP);
fos.write(decodedStr);
Intent sendIntent = new Intent();
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setAction(Intent.ACTION_SEND);
File filePath = new File(String.valueOf(context.getFilesDir()));
File newFile = new File(filePath, "application/pdf");
sendIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".FileProvider", newFile));
sendIntent.setType("application/pdf");
context.startActivity(sendIntent);
fos.flush();
fos.close();
我还尝试在线转换器来检查转换是否正常。我有这样的想法:

%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 348.00 256.00]
/Contents 4 0 R
>>
endobj
4 0 obj
<</Length 11287>>
stream
1.000 0.000 0.000 -1.000 0.000 256.000 cm
0.20 w
0 G
q
1.000 0.000 0.000 1.000 0.000 0.000 cm
q
/F9 16 Tf
/F9 12 Tf
q
q
Q
q
Q
Q
q
Q
q
/GS1 gs
1.000 0.000 0.000 1.000 0.000 0.000 cm
0.000 0.000 m 
348.000 0.000 l
348.000 0.000 348.000 0.000 348.000 0.000 c
348.000 256.000 l
348.000 256.000 348.000 256.000 348.000 256.000 c
0.000 256.000 l
为了避免像这是一张图片这样的回答,你为什么不把它作为图片发送呢?我可以告诉你,这只是我转换的另一个选项。我的转换和分享它作为图像完美地工作。谢谢你的时间和帮助

@编辑

我改变了这一行: File newFile=新文件路径,application/pdf; 为此: File newFile=新文件路径,doc.pdf


但现在我得到了PDF中的空白页。

错误1:打开一个文件,然后尝试在完成文件刷新、丢失的GETF.Syc和Cuff.

之前把它交给另一个应用程序。 错误2:您正在主应用程序线程上执行磁盘I/O

错误3:您试图将整个解码的PDF读入堆空间,这对于许多PDF文件来说都会失败,因为它们太大了

Bug 4:newFile并不指向您试图创建的文件,而是指向路径中包含application/pdf的某个文件。因此,另一个应用程序无法访问您的PDF,即使它已完全写入磁盘


Bug 5:您没有FLAG\u GRANT\u READ\u URI\u权限,因此第三方应用可能没有对您的内容的读取权限。请查看第三个项目符号。

确保文件正确保存,如果没有其他外部应用可用,请尝试在webview中加载文件。@SARATHV哦,有可用的应用,正如我所说的:Evernote或Gmail。他们说:无法读取空文件。你读过这篇文章吗?@SARATHV我为图像导出做了同样的保存,它工作正常,为什么它在这里会工作错误?我为图像做了同样的事情,唯一的区别是这里的application/pdf。那为什么呢?我是说Bug4mostly@soommy12:File newFile=新文件路径,应用程序/pdf。我不知道你为什么在那里放一个MIME类型。您的openFileOutput调用正在使用doc.pdf。我强烈建议你创建一个文件对象,并在两个地方使用它:为了编写文件,在文件上创建一个FileOutputStream,并获取你的Uri。好吧,我只是利用了我的另一个帖子中的建议。你可以发布一些代码吗?我不明白你想说什么me@soommy12:将文件newFile=newfilepath,application/pdf替换为文件newFile=newfilepath,doc.pdf。