我創建一個應用程序,並在此應用程序有一個按鈕打開一個PDF與用戶的活動日程表...PDF文件不開放的牛軋糖+
的PDF是資產的文件夾。
而且actualy代碼:
private void abrirCalendario() {
AssetManager assetManager = getAssets();
File fileDir = new File(Environment.getExternalStorageDirectory().getPath() + "/");
fileDir.mkdirs();
File file = new File(fileDir, "Calendario DAERG.pdf");
String path = Environment.getExternalStorageDirectory().getPath() + "/Calendario DAERG.pdf";
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, getPackageName() + ".provider", new File(path));
List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = "tk.davidev.android.ews";
grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}else {
uri = Uri.fromFile(new File(path));
}
if(!file.exists()) {
try {
InputStream in = assetManager.open("calendario_2017.pdf");
OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
copyFile(in, out);
in.close();
out.flush();
out.close();
} catch (Exception e) {
}
}
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
而且我得到的錯誤是: file:///storage/emulated/0/Calendario DAERG.pdf exposed beyond app through Intent.getData()