#android #permissions
#Android #разрешения
Вопрос:
Я пробовал следующее, но это всегда возвращает PackageManager.PERMISSION_DENIED хотя я знаю, что у меня есть право на чтение файла. Есть идеи?
Uri uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM);
// check uri permissions but does not work
int perm = checkUriPermission(uri , "r", null,
Binder.getCallingPid(), Binder.getCallingUid(),
Intent.FLAG_GRANT_READ_URI_PERMISSION);
if (perm == PackageManager.PERMISSION_DENIED) {
Toast.makeText(getApplicationContext(),
"No permissions to read the file", Toast.LENGTH_LONG).show();
finish();
}
Ответ №1:
r
это не разрешение. Попробуйте передать null
для второго параметра или используйте версию checkUriPermission()
, которая пропускает два строковых параметра, которые у вас есть во второй и третьей позициях.
Комментарии:
1. А, теперь я понял. Я всегда должен знать разрешение, которое я хочу проверить. Но это не то, чего я хочу. Я хочу знать, могу ли я прочитать файл. Иногда есть другие приложения, которые позволяют отправлять файл, но у моего приложения нет разрешения на их чтение. Итак, я должен перехватить SecurityException…