Как разыграть переданный Иерархический URI дополнительно? - PullRequest
0 голосов
/ 26 апреля 2018

Мое приложение имеет фильтр намерений, который позволяет другому приложению передавать данные через «общий доступ», и следующие дополнения к намерениям (выясняются при итерации по

Intent.getExtras()):

android.intent.extra.SUBJECT some string (java.lang.String)


android.intent.extra.STREAM content://provider/resource (android.net.Uri$HierarchicalUri)

Мне нужно скопировать файл из URI, указанного как Intent.EXTRA_STREAM, однако, нет способа получить его с помощью Intent.get<type name>Extra(), и если я попытаюсь получить его с помощью Intent.getExtras().get(Intent.EXTRA_STREAM), это не поможет, потому что я не знаю, как привести его к «обычному» URI, приведение к классу URI вызывает ClassCastException.

1 Ответ

0 голосов
/ 26 апреля 2018

Тьфу, я решил эту проблему.

На самом деле, я пытался привести к java.net.URI вместо android.net.Uri, Uri в Android, кажется, имеет некоторые отличия от URI.

в Java
intent.getExtras.get(Intent.EXTRA_STREAM) instanceof URI // false
intent.getExtras.get(Intent.EXTRA_STREAM) instanceof Uri // true

В этом все дело.

...