При получении URI отказано в получении разрешения, несмотря на то, что FLAG_GRANT_READ_URI_PERMISSION установлен
У меня есть два приложения для Android A и B. Я передаю файл из приложения A в приложение B и вижу, что приложение B получает URI. Я устанавливаюFLAG_GRANT_READ_URI_PERMISSION
флаг в приложении А, и я вижу, что этоmFlags
это 1, который является значениемFLAG_GRANT_READ_URI_PERMISSION
из приложения B. Это все хорошо, но когда я пытаюсь создатьFileInputStream
из URI я получаюFileNotFoundException (Permission denied)
исключение. Что я делаю неправильно?
Вот соответствующие фрагменты кода:
В приложении А:
public void openTest Intent(String filePath) {
Intent testIntent = new Intent("com.example.appB.TEST");
testIntent.addCategory(Intent.CATEGORY_DEFAULT);
testIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
testIntent.setDataAndType(Uri.parse("file://"+filePath),"text/plain");
try {
startActivityForResult(testIntent, OPEN_NEW_TERM);
} catch (ActivityNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
В приложении B:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent.getAction().equals("com.example.appB.TEST")) {
Uri fileUri = intent.getData();
File srcFile = new File(fileUri.getPath());
File destFolder = getFilesDir();
File destFile = new File(destFolder.getAbsolutePath()+srcFile.getName());
try {
copyFile(srcFile,destFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void copyFile(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src); //**this is where it dies**
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
Это когда я создаюin
что он получает исключение. Есть мысли о том, почему?