Это вариант вопроса, который я задал на днях и решил с помощью.
Android 10: возможность загрузить Uri напрямую, но не с исключением «Отказ в разрешении», когда попытка позже
Используя комбинацию ACTION_OPEN_DOCUMENT и getContentResolver (). takePersistableUriPermission, я могу позже загрузить файл, выбранный пользователем.
Но, если пользователь выбирает изображение через Фото / Галерею, чтобы поделиться им через наше приложение, и если в этот момент нет сети, как и ожидалось, приложение должно попытаться загрузить позже. Во время этой повторной попытки я сталкиваюсь с исключением «Отказ в разрешении». Пожалуйста, дайте мне знать, что может быть не так. Ценим вашу помощь.
Как получается URI
callingIntent = new SharedIntent();
callingIntent.action = getIntent().getAction();
callingIntent.type = getIntent().getType();
if (Intent.ACTION_SEND.equals(callingIntent.action) ||
Intent.ACTION_SEND_MULTIPLE.equals(callingIntent.action))
{
callingIntent.uri = (Uri) getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
if (null == callingIntent.uri)
callingIntent.uri = getIntent().getData();
callingIntent.aUri = getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM);
}
В Намерении, которое получает URI через Фото, у нас есть это -
getContentResolver().takePersistableUriPermission(callingIntent.uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
Для вызова IntentService, которому передается URI для загрузки -
intentService.setData(callingIntent.uri);
intentService.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startService(intentService);
Но когда вызывается startService, возникает исключение «Отказ в разрешении» - «Отказ в разрешении: разрешения для UID не найдены ....»