2016-06-02 5 views
0

Как я могу поделиться Uri с моим приложением с другим приложением? Он может указывать на файл dropbox, файл диска google, локальный File или локальный DocumentFile.Поделиться uri с другим приложением

У меня есть разрешения на чтение Uri, теперь я хочу поделиться им с другим приложением и передать разрешения. Как мне это сделать?

Нужно ли мне писать собственный контент-провайдер?

ответ

2

Нужно ли мне писать собственный контент-провайдер?

У вас нет возможности заставить стороннего поставщика (например, Dropbos, Google Диск) предоставить доступ к отдельному стороннему приложению. Это было бы сродни тому, что я мог бы предоставить другим людям доступ к вашему банковскому счету только потому, что вы дали мне доступ к вашему банковскому счету.

Общий механизм общего доступа предназначен для контента, которым вы управляете, или для простых вещей (например, простого текста).

Ваш выбор:

  1. Не делите вещи, которые вам не удается.

  2. Сделать локальную копию (в файле) контента и поделиться ею, например, с помощью ContentProvider.

  3. Попытка сделать прокси ContentProvider, который читает содержимое и обслуживает его напрямую через канал, вместо того, чтобы обслуживать локальный файл, содержащий копию содержимого. Для ACTION_SEND это может сработать, но имейте в виду, что потоки, поддерживаемые трубой, не доступны для поиска, и поэтому некоторые типы приложений, например медиаплееры, не любят потоки, поддерживаемые трубами.

+0

Я пишу приложение галереи, и я хочу, чтобы пользователь мог выбрать любое изображение или видео в моем приложении с помощью '' android.intent.action.PICK' и android.intent.action.GET_CONTENT'. Это также должно работать с видеоплеером, поэтому вы бы предложили сделать локальную копию данных и сделать эти локальные данные доступными через поставщика контента? Даже если данные могут быть локальными где-то на SD-карте? – prom85

+0

@ prom85: Я предлагаю вам ограничить ваше приложение внешним хранилищем или ограничить эти функции внешним хранилищем. Я не считаю, что пользовательский интерфейс будет очень хорош для того, что вы пытаетесь сделать с контентом из других источников. – CommonsWare

+0

Если я ограничиваю это только внешним хранилищем, как бы вы предложили поделиться с ним? Direclty, использующий uri, кажется, не работает ... – prom85

Смежные вопросы