在我的应用程序中,按钮事件从服务器返回PDF的base64字符串。 然后,我将此base64写入文件。 并尝试通过外部PDF查看器打开它。 它在Android设备(除Android 11之外)上均可正常运行。请在下面查看我的代码。
byte[] decodedContent = android.util.Base64.decode(base64.getBytes(), Base64.DEFAULT);
try {
File path = new File(getApplicationContext().getExternalFilesDir(null).getAbsolutePath(), "PDFData");
if (!path.exists()) {
path.mkdirs();
}
file = new File(path, "myPDF.pdf");
outputStream = new FileOutputStream(file);
outputStream.write(decodedContent);
outputStream.close();
Uri targetUri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(targetUri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PackageManager pm = getApplicationContext().getPackageManager();
if (pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) == null) {
Toast.makeText(getApplicationContext(), "No application found to open PDF, please install one.", Toast.LENGTH_SHORT).show();
}
else{
startActivity(intent);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
Log.d("FileNotFound", "FileNotFoundException");
} catch (IOException ex) {
ex.printStackTrace();
Log.d("IOException", "IOException");
} finally {
// Make absolutely certain the outputStream is closed
try {
Log.d("outputStream", "outputStream");
if (outputStream != null) {
outputStream.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
清单文件中已经具有以下权限:
请帮我解决一下这个。 提前致谢!