Как отправить данные внутри намерения без внешнего хранилища - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь отправить данные в намерение ACTION_VIEW или ACTION_SEND без записи этих данных в файл.

Большинству намерений требуется Uri, который обычно основан на пути к файлу или URL-адресе, например так:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(context.getFilesDir(), TEMP_FILE_NAME));
intent.setDataAndType(uri, "application/pdf");
context.startActivity(intent);

Я бы предпочел, чтобы данные, которыми я делюсь с намерением, не были доступны для просмотра всем на внешнем хранилище.Внутреннее хранилище (как в примере выше) не предоставляется вызываемым намерениям (это означает, что средство просмотра PDF не может видеть файлы в личном пространстве моего приложения).

Дайан Хэкборн ссылается на возможность копирования данных в намеренииздесь: http://groups.google.com/group/android-developers/browse_thread/thread/be9b069ca8906417#

Но я не нашел других данных о том, как это могло бы произойти.

Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 27 февраля 2012

Это зависит от того, какую форму / размер принимают ваши данные, но, вероятно, самый простой вариант - включить данные как «дополнительные» в Intent.

Дополнительно могут быть различных типов, включая большинство примитивов Java (String, int, double и т. Д.) И Bundle с и ArrayList с.

Если у вас есть собственная структура классов, вы также можете реализовать Parcelable и включать экземпляры ваших собственных классов в качестве дополнительных.

Однако я бы сказал, что если ваши данные имеют большой объем, передача их в память с помощью Intent, вероятно, не лучшая идея. Если это так, вам, возможно, придется просто прикусить пулю и временно записать данные в хранилище на время вызова и очистить его, когда ваш вызов Activity / Service восстановит фокус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...