Webview в PDF игнорирует название работы

Я пытаюсь напечатать HTML-страницу из webview в KitKat (4.4.4), в основном используя пример кода, представленный в документации API Google . Соответственно, я задал имя задания печати следующим образом:

String jobName = getString(R.string.app_name) + " Document"; PrintJob printJob = printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build()); 

Мой код работает нормально, и страница печатается по назначению. Даже если пользователь выбирает вариант «сохранить как PDF» в диалоговом окне стандартной печати Android, коды отображают хороший PDF-файл, и пользователь может выбрать имя файла. На этом этапе я ожидал, что Android будет использовать строку, хранящуюся в поле jobName качестве имени файла. Вместо этого он всегда использует webview как имя файла, хотя мой код не содержит webview как строку.

Есть ли способ установить другое имя по умолчанию для хранения PDF-файла, созданного в моем приложении?

Спасибо за ваши подсказки …

Обновить:

Я потратил некоторое дополнительное время на изучение этой проблемы, и я обнаружил, что WebView использует AwPrintDocumentAdapter качестве адаптера печати, если адаптер создан путем вызова createPrintDocumentAdapter() как это предлагается в документации API. Затем этот класс вызывает PrintDocumentInfo.Builder("webview") который, по-видимому, является причиной того, что PDF всегда называется «webview». Некоторые исследования показывают следующий фрагмент кода в AwPrintDocumentAdapter :

 @Override public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle metadata) { mAttributes = newAttributes; // TODO(sgurun) pass a meaningful string once b/10705082 is resolved PrintDocumentInfo documentInfo = new PrintDocumentInfo .Builder("webview") .build(); // TODO(sgurun) once componentization is done, do layout changes and // generate PDF here, set the page range information to documentinfo // and call onLayoutFinished with true/false depending on whether // layout actually changed. callback.onLayoutFinished(documentInfo, true); } 

Следовательно, это, по-видимому, является основной причиной моей проблемы – по крайней мере, если этот код пробился к моему тестовому устройству Nexus 4 … Наконец, лучший способ справиться с этой проблемой именования – это реализация пользовательского адаптера печати.

Существуют ли какие-либо другие решения, не требующие специального адаптера печати (который должен содержать код для расчета количества страниц и т. Д.)?

Intereting Posts
Gson, как десериализовать массив или пустую строку Android-эмулятор не будет монтировать SD-карту Максимальное количество прокрутки HorizontalScrollView Изменение образа ImageView программным способом Частная папка на внутреннем / внешнем хранилище на Android Как уведомить вызывающую активность при завершении работы SyncAdapter? Как установить прозрачный фон в качестве настраиваемого диалогового окна в android Как изменить цвет панели инструментов и цвета строки состояния в соответствии с цветом изображения в дизайне материалов Android? Доступ к следующей кнопке event android Невозможно выделить достаточное количество памяти в JNI Приложение Xamarin Android закрывается сразу после запуска Трудности с импортом facebook-android-sdk в eclipse Примеры файлов построения градиентов для ссылки на Crashlytics из проектов приложений и библиотек Обнаруживать Изменение состояния батареи при каждом проценте в андроиде Изменение свойства MaxLines TextView с анимацией?