Как мне проверить разрешение URI, который был отправлен с намерением?

#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…