Android намеревается поделиться текстовыми/обычными данными с Google Диском

Я создал простое приложение для блокнота, которое реализует намерение общего доступа ACTION_SEND для обмена заметками.

Мои данные имеют MIME-тип «текст/обычный», и Google Диск (ранее Google Docs) предлагается в качестве выбора на моем устройстве, когда я выбираю Google Диск, я получаю сообщение об ошибке «Этот элемент не может быть загружен как документ Google» через Тостовое сообщение.

Я создаю свое намерение поделиться следующим образом:

Intent share_intent = new Intent(android.content.Intent.ACTION_SEND);

share_intent.setType("text/plain");
share_intent.putExtra(android.content.Intent.EXTRA_SUBJECT, name);
share_intent.putExtra(android.content.Intent.EXTRA_TEXT, content);

startActivity(share_intent);

Такие приложения, как Mail, Messaging, Twitter и Wordpress, похоже, хорошо справляются с задачей и делятся как минимум содержимым EXTRA_TEXT.

Интересно, есть ли способ, который позволил бы Google Диску успешно загрузить заметку или, по крайней мере, лучше обработать намерение?

Я новичок в Android, поэтому, пожалуйста, простите мою глупость, если это окажется глупым вопросом. Я разрабатываю минимальную версию SDK 15, если это вообще поможет.

Вот снимок экрана с сообщением об ошибке: Снимок экрана с сообщением об ошибке

В LogCat я снова заметил сообщение об ошибке:

05-13 23:31:46.906: E/UploadSharedItemActivity(14594): This item cannot be uploaded as Google Document.

Также перед сообщением об ошибке появляется предупреждение:

05-13 23:31:46.250: W/ND(14594): Could not load Finalizer in its own class loader. Loading Finalizer in the current class loader instead. As a result, you will not be able to garbage collect this class loader. To support reclaiming this class loader, either resolve the underlying issue, or move Google Collections to your system class path.
05-13 23:31:46.250: W/ND(14594): java.io.FileNotFoundException: com/google/inject/internal/Finalizer.class
05-13 23:31:46.250: W/ND(14594):    at NE.a(FinalizableReferenceQueue.java:269)
05-13 23:31:46.250: W/ND(14594):    at NE.a(FinalizableReferenceQueue.java:253)

Не знаю, может это быть связано или нет.

Я могу сбросить весь LogCat сюда, если это поможет.


person Russ Wilde    schedule 13.05.2012    source источник
comment
Похоже на ошибку в приложении Google Диск. Ваш код выглядит нормально, и если другие приложения обрабатывают его без проблем, это вряд ли будет проблемой с вашей стороны. При этом вы всегда можете поэкспериментировать с другими форматами (например, обернуть вещь некоторыми тегами и назвать ее text/html) и посмотреть, что получится.   -  person CommonsWare    schedule 14.05.2012
comment
Я думаю ты прав; Я только что попытался поделиться некоторым текстом из приложения браузера и нескольких других, и оттуда я получаю ту же ошибку. Я должен был проверить это, прежде чем спрашивать на самом деле. Я попытаюсь обернуть свой текст в теги и поделиться им как text/html, на случай, если это обойдет проблему, и отчитаюсь.   -  person Russ Wilde    schedule 14.05.2012


Ответы (2)


Вы не можете поделиться текстом с документом Google, но вы можете поделиться файлом (текстовым файлом или другим). Итак, просто сохраните свой текст в файл внутри вашего приложения и поделитесь этим файлом с намерением:

    Intent intent = new Intent(android.content.Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + your_file_path));
    startActivity(Intent.createChooser(intent, ""));
person Etienne    schedule 28.08.2012
comment
Это хорошее решение; это работает удовольствие. Я также добавил в намерение дополнительные значения EXTRA_SUBJECT и EXTRA_TEXT, чтобы другие приложения, такие как обмен сообщениями, также отвечали намерению. Единственная проблема заключается в том, что клиент электронной почты включает файл в качестве вложения, а также заполняет содержимое электронной почты EXTRA_TEXT и строкой темы из EXTRA_SUBJECT. - person Russ Wilde; 16.09.2012

Да, похоже, это ошибка в Google Диске. Я должен был более тщательно проверить в других приложениях, прежде чем спрашивать здесь.

Я сообщил об этом через функцию «Отправить отзыв» в приложении. Надеюсь, кто-нибудь на фабрике программного обеспечения Google исправит это в будущем.

person Russ Wilde    schedule 16.05.2012