- Assets (Активы)
- Чтение файлов
- Используем собственные шрифты
- Загрузка локальных файлов из активов в WebView
- Получаем список файлов в папке assets
- Ограничение на размер файлов
- Ошибка приложения — это каталог (файл: ///#android_asset/www/index.html)
- 8 ответов
- Что делает файл: / / / Android asset / www / index.HTML-код означает?
- 6 ответов
- Ошибка приложения-подключение к серверу не удалось. (файл: / / / Android asset / www / index.формат html)
- 14 ответов
- File android asset blocked
- Чтение файлов
- Используем собственные шрифты
- Загрузка локальных файлов из активов в WebView
- Получаем список файлов в папке assets
- Ограничение на размер файлов
Assets (Активы)
В Android имеется ещё один каталог, в котором могут храниться файлы, предназначенные для включения в пакет — assets. Этот каталог находится на том же уровне, что и res. Для файлов, располагающихся в assets, в R.java не генерируются идентификаторы ресурсов. Для их считывания необходимо указать путь к файлу. Путь к файлу является относительным и начинается с /assets. Этот каталог, в отличие от подкаталога res, позволяет задавать произвольную глубину подкаталогов и произвольные имена файлов и подкаталогов.
По умолчанию проект в студии не содержит данную папку. Чтобы её создать, выберите меню File | New | Folder | Assets Folder.
Чтение файлов
Для доступа к файлам используется класс AssetManager. Пример для чтения текстового файла.
Сначала на Kotlin.
Для доступа к графическому файлу из актива можно использовать следующий код:
Вы также можете загрузить изображение в Bitmap, используя BitmapFactory.decodeStream(), вместо Drawable.
Функция-расширение для Kotlin, которая вернёт Bitmap.
Используем собственные шрифты
Напишем практический пример создания приложения, в котором будут использоваться собственные шрифты, не входящие в стандартную библиотеку шрифтов Android. Для этого мы упакуем нужные шрифты вместе с приложением. Поместим в каталог assets/fonts файлы шрифтов (можно скачать бесплатные шрифты с сайтов 1001 Free Fonts или Urban Fonts ).
В файл разметки добавим пару текстовых полей с заготовленным текстом для вывода этого текста с нашим шрифтом.
В классе активности загрузим объект EditText из ресурсов, а затем создадим объект Typeface, используя вызов статического метода Typeface.createFromAsset(). Метод createFromAsset() принимает два параметра:
- объект AssetManager, который можно получить вызовом метода getAssets()
- путь к файлу актива.
Например, загрузить шрифт для текстового поля EditText можно следующим способом:
Запустив проект, мы увидим в текстовых полях надписи Happy New Year! и Meow!, выводимые нашими собственными шрифтами.
Пример для фрагмента.
Загрузка локальных файлов из активов в WebView
Если нужно загрузить локальные страницы и изображения из активов в WebView, то можно использовать префикс file://android_asset. Подробнее смотрите в статье про WebView.
Получаем список файлов в папке assets
Можно получить список файлов, которые находятся в папке assets. Для быстрой проверки кода я вручную скопировал в папку два файла:
Кроме ваших файлов, также возвращаются странные папки /images, /sounds, /webkit. Учитывайте это в своих проектах. Так как в папке можно создавать собственные подпапки, то можно воспользоваться вспомогательным методом:
Ограничение на размер файлов
По сети гуляет информация, что существует ограничение в 1 Мб на размер файлов в папке assets. При превышении размера у вас может появиться ошибка:
Я не сталкивался, поэтому рецепт решения проблемы не предлагаю.
Источник
Ошибка приложения — это каталог (файл: ///#android_asset/www/index.html)
Я использую PhoneGap для разработки приложения на Android, когда я тестирую его на своем телефоне, я получаю эту ошибку Application Error Is a directory (file:///#android_asset/www/index.html) Я получаю эту ошибку, только когда у меня нет подключения к Интернету на моем телефоне.
8 ответов
Я нашел ответ здесь: © /wmdoc_6.5/PhoneGap?xpage=print#HTheconnectiontotheserverwasunsucessful28file3A2F2F2Fandroidasset2Fwww2Findexhtml29
6.1 Соединение с сервером было неудачным (файл: ///android_asset/www/index.html)
ГДЕ: при запуске приложения на устройстве Android.
Все, что вы помещаете в файл index.html, который запрашивает удаленный ресурс вызовет вышеуказанную ошибку для устройств Android, и ваше приложение умрет. Отладчик Weinre является распространенным причина этой ошибки.
Решение. Переместите загрузку удаленных ресурсов из index.html и в ваше приложение, где оно тихо потерпит неудачу.
Это означает, что в вашем index.html вы используете ресурс, который требует доступа в Интернет. Просмотрите ваш index.html и найдите любой файл CSS, javascript или Cordova, связанный напрямую из Интернета. Если это так, вы должны загрузить соответствующий файл и сделать его локальным.
У меня возникла такая же проблема, когда я связал свой мобильный JS-файл Jquery следующим образом:
Включите phonegap.js в тег . Это требуется телефонной пробой во время сборки.
Вам не нужно скачивать phonegap.js. Все, что вам нужно, это включить код, как показано на рисунке. Во время сборки PhoneGap будет искать его и автоматически включать. Если нет, то при запуске вашего нативного приложения оно будет искать phonegap.js на сервере phonegap, и это займет слишком много времени. В конце концов загрузка вашего приложения прекратится с сообщением об ошибке, которое вы видите.
Ничего себе! Я могу в это поверить. Я столкнулся с этой проблемой, я был обескуражен и почти отказался от использования разрыва телефона. Тем не менее, я прочитал его на сайте PhoneGap о phonegap.js под подзаголовком ниже
«Убедитесь, что вы все еще можете получить доступ к PhoneGap API»
«После того как вы удалили phonegap.js, вам нужно убедиться, что ваше приложение все еще имеет доступ к PhoneGap API.
Для этого просто убедитесь, что в вашем index.html сделана следующая ссылка «
Это похоже на магию. Это работает.
Я следую за Быстрый старт, Гие «, и у меня та же проблема. Но я решил это. Моя проблема заключалась в несоответствии между загруженной телефонной пробкой и последовавшим за ней парнем.
Вы должны быть уверены, что это детали: — В intex.html вы указываете правильную версию js-скрипта (например: cordova-2.7.0.js) — Он должен соответствовать загруженной версии PhoneGab. Версия PhoneGab и сценарий JS должны совпадать.
Надеюсь, это поможет вам.
Пустой тег доступа разрешает доступ ко всем внешним ресурсам.
В противном случае вы можете указать конкретные домены:
Источник
Что делает файл: / / / Android asset / www / index.HTML-код означает?
Я хочу знать, что значит file:/// означает При загрузке html-файла из папки assets в android
это абсолютное имя пути, которое указывает на корневой каталог?
Я видел это в учебнике для phonegap, кстати.
6 ответов
file:/// — это URI (Uniform Resource Identifier), который просто отличается от стандартного URI, который мы все знаем слишком хорошо — http:// .
это означает абсолютное имя пути, указывающее на корневой каталог в любой среде, но в контексте Android это соглашение, чтобы сказать Android run-time сказать»здесь каталог www есть файл под названием index.html расположенном в
Если кто-то использует AndroidStudio, убедитесь, что папка assets помещена в
app/src/main / активы
URI-код «file:///android_asset/» указывает на YourProject/app/src/main/assets/ .
Примечание: android_asset/ использует единственное число (актив) и src/main/assets использует множественное (активов).
Предположим, у вас есть файл YourProject/app/src/main/assets/web_thing.html что вы хотели бы отобразить в WebView. Вы можете обратиться к нему так:
код выше может быть расположен в папке активность класс, возможно, в onCreate метод.
здесь руководство общий структура каталогов проекта android, которая помогла мне понять этот ответ.
это на самом деле называется file:///android_asset/index.html
file:///android_assets/index.html даст вам ошибку построения.
считайте отредактировать заголовок вопрос
что значит файл:/ / / android_asset / index.HTML-код означает
Я использую Android Studio (Eclipse с ADT не может работать должным образом из-за проблемы сборки).
Источник
Ошибка приложения-подключение к серверу не удалось. (файл: / / / Android asset / www / index.формат html)
приложение умирает при запуске (подключение к серверу не удалось)
У меня есть приложение для Android, которое я пишу с помощью PhoneGap BUILD. Приложение работало нормально раньше, но теперь, похоже, я получаю эту ошибку после уточнения моего приложения (только некоторые изменения пользовательского интерфейса)
1) при запуске приложения я (обычно) получаю:
ошибка приложения-подключение к серверу не удалось. (файл: / / / android_asset / www / index.html)
Извините, если это дублирование любой вопрос. Я видел здесь некоторые подобные вопросы, но я не мог найти идеального ответа или решения. А в моем случае он работал хорошо до последнего изменения.
14 ответов
Как вы сказали, есть много повторяющихся вопросов на эту же тему. Любые объяснения вашей ситуации.
проблема может быть решена путем добавления тайм-аута для вызова индекса.HTML-код
ie вам нужно добавить super.setIntegerProperty(«loadUrlTimeoutValue», 70000); в вашей деятельности.java-файл (внутри src/com/yourProj/— / youractivity.Ява) выше этой строки: super.loadUrl(«file:///android_asset/www/index.html»);
объяснение:
Это может произойти по следующим причинам
основная причина: проблема, вероятно, из-за скорости эмулятора, поэтому сеть слишком медленно завершает связь своевременно.
Это может быть из-за:
- ваш код / данные / изображение имеет слишком большой размер ( я думаю, в вашем случае вы используете некоторые изображения, как вы сказали, что сделали некоторые изменения пользовательского интерфейса, может быть, размер изображений высок)
- ваш скрипт может иметь бесконечный или длинный цикл, так что загрузка занимает слишком много времени.
- вы будет использовать слишком много скриптов (jQuery, iscroll и т. д.. больше количество плагинов или скриптов)
в свой конфиг.xml-файл добавьте эту строку:
Источник
File android asset blocked
В Android имеется еще один каталог, в котором могут храниться файлы, предназначенные для включения в пакет – assets. Этот каталог находится на том же уровне, что и res. Для файлов, располагающихся в assets, в R.java не генерируются идентификаторы ресурсов. Для их считывания необходимо указать путь к файлу. Путь к файлу является относительным и начинается с /assets. Этот каталог, в отличие от подкаталога res, позволяет задавать произвольную глубину подкаталогов и произвольные имена файлов и подкаталогов.
По умолчанию проект в студии не содержит данную папку. Чтобы её создать, выберите меню File | New | Folder | Assets Folder.
Чтение файлов
Для доступа к файлам Assets используется класс AssetManager. Пример для чтения текстового файла:
Для доступа к графическому файлу из актива можно использовать следующий код:
Вы также можете загрузить изображение в Bitmap, используя BitmapFactory.decodeStream(), вместо Drawable.
Используем собственные шрифты
Напишем практический пример создания приложения, в котором будут использоваться собственные шрифты, не входящие в стандартную библиотеку шрифтов Android. Для этого мы упакуем нужные шрифты вместе с приложением. Поместим в каталог assets/fonts файлы шрифтов (можно скачать бесплатные шрифты с сайтов 1001 Free Fonts или Urban Fonts ).
В файл разметки добавим пару текстовых полей с заготовленным текстом для вывода этого текста с нашим шрифтом.
В классе активности загрузим объект EditText из ресурсов, а затем создадим объект Typeface, используя вызов статического метода Typeface.createFromAsset(). Метод createFromAsset() принимает два параметра:
- объект AssetManager, который можно получить вызовом метода getAssets()
- путь к файлу актива.
Например, загрузить шрифт для текстового поля EditText можно следующим способом:
Запустив проект, мы увидим в текстовых полях надписи Happy New Year! и Meow!, выводимые нашими собственными шрифтами.
Пример для фрагмента.
Загрузка локальных файлов из активов в WebView
Если нужно загрузить локальные страницы и изображения из активов в WebView, то можно использовать префикс file://android_asset. Подробнее смотрите в статье про WebView.
Получаем список файлов в папке assets
Можно получить список файлов, которые находятся в папке assets. Для быстрой проверки кода я вручную скопировал в папку два файла:
Кроме ваших файлов, также возвращаются странные папки /images, /sounds, /webkit. Учитывайте это в своих проектах. Так как в папке можно создавать собственные подпапки, то можно воспользоваться вспомогательным методом:
Ограничение на размер файлов
По сети гуляет информация, что существует ограничение в 1 Мб на размер файлов в папке assets. При превышении размера у вас может появиться ошибка:
Я не сталкивался, поэтому рецепт решения проблемы не предлагаю.
В прошлых темах изображения в проекте помещались в папку res/drawables в качестве ресурсов и выводились в элемент ImageView. Однако изображения необязательно в принципе помещать именно в эту папку. Файлы также могут располагаться в папке assets. Рассмотрим, как работать с такими файлами изображений.
Вначале добавим в проект папку assets. Для этого перейдем в Android Studio к полному определению проекта и добавим в папку main новую папку, которую назовем assets:
Добавим в эту папку какое-нибудь изображение:
Пусть в файле activity_main.xml будет определен элемент ImageView:
Загрузим изображение из папки assets в элемент ImageView в MainActivity :
Для загрузки файла необходиом получить поток InputStream с помощью выражения getApplicationContext().getAssets().open(filename) .
App Dies On Startup (подключение к серверу не увенчалось успехом)
У меня есть приложение для Android, которое я пишу, используя PhoneGap BUILD. Приложение работает нормально раньше, но теперь кажется, что я получаю эту ошибку после уточнения моего приложения (некоторые изменения пользовательского интерфейса 0)
1) Когда я запускаю приложение, я (обычно) получаю:
Ошибка приложения. Соединение с сервером не увенчалось успехом. (файл: ///android_asset/www/index.html)
Извините, если это дублирование любого вопроса. Я видел некоторые подобные вопросы здесь, но я не мог найти идеальный ответ или решение. Как и в моем случае, он работал нормально до моих последних изменений.
Как вы сказали, в этой же теме много повторяющихся вопросов. Любое объяснение вашей ситуации.
Проблема может быть решена путем добавления таймаута для вызова вашего index.html
Т.е. вам нужно добавить super.setIntegerProperty(«loadUrlTimeoutValue», 70000); В файле activity.java (внутри src / com / yourProj / – / youractivity.java) над этой строкой: super.loadUrl(«file:///android_asset/www/index.html»);
Объяснение:
Это может произойти по следующим причинам:
Основная причина: проблема, вероятно, связана со скоростью эмулятора, поэтому сеть слишком медленно завершает коммуникацию своевременно.
Это может быть связано с:
- Ваш код / данные / изображение имеют слишком большой размер (я думаю, в вашем случае вы используете некоторые изображения, так как вы сказали, что сделали некоторые модификации пользовательского интерфейса, может быть размер изображений высок)
- У вашего скрипта может быть бесконечный или длинный цикл, поэтому для загрузки требуется слишком много времени.
- Вы будете использовать слишком много скриптов (jQuery, iscroll и т. Д. И т. Д. Больше плагинов или скриптов)
В файле config.xml добавьте эту строку:
Вот рабочее решение
Создать новую страницу main.html
Измените следующее в mainactivity.java
Теперь создайте приложение и работайте над любым медленным подключением
Удалите удаленные файлы jQuery, связанные с удаленно, например: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
Вместо этого загрузите этот файл и загрузите его из локальной папки js, создав URI:
Удалите внешние скрипты в index.html
У меня было то же самое в моем проекте.
Я попробовал «super.setIntegerProperty (» loadUrlTimeoutValue «, 70000);» но безрезультатно.
Я гарантировал, что все файлы были правильно связаны [CSS, JS-файлы и т. Д.], Проверили HTML с помощью w3c validator [ http://validator.w3.org/#validate_by_upload ] и очистили проект [Project -> Clean]
Теперь он загружается и выполняется без такой же ошибки.
Надеюсь это поможет
У меня была аналогичная проблема, и, основываясь на вышеприведенных предложениях, я впервые добавил «super.setIntegerProperty (« loadUrlTimeoutValue », 70000); Но это не помогло. Поэтому я попробовал Project -> Clean, это сработало, и я могу запустить приложение прямо сейчас!
1.Зарегистрируйте свой index.html в «main.html»
2. Создайте новый «index.html» и поместите в него следующий контент:
3.Застройте свое приложение! Больше ошибок!
Расширение ограничения времени ожидания загрузки не решит проблему, вызвавшую ошибку, она просто позволит системе отображать сообщение, но производительность будет затронута.
Фактическая причина. Возможно, вы связываете файлы или изображения с удаленными местами, и эти ресурсы слишком долго загружаются. (Это, скорее всего, самая распространенная ошибка)
Окончательное решение: переместите все сценарии, изображения и css в некоторые локальные папки и загрузите их локально …
Производительность будет увеличена, и ошибка будет эффективно решена.
В моем случае я использую ионный, и я просто закрыл диалог, отправленный в приложения в эмулятор, и вместо этого запустил приложение. Это сработало. Я понял это отсюда, потому что это был просто вопрос времени.
Проверьте файл index.html . Если вы используете внешние ресурсы, недоступные при запуске приложения, вы можете получить эту ошибку.
В моем случае я забыл удалить ссылку на скрипт отладчика (weinre).
Поэтому приложение работало над эмулятором, потому что http://192.168.0.102:8080/ был на моем локальном хосте и доступен для эмулятора.
Но когда я настраивал приложение на мобильный телефон, у меня была такая же ошибка, потому что 192.168.0.102 не была доступна из мобильной сети.
Если вы используете визуальную студию. После изменения config.xml иногда вам нужно это
Решение для чистой сборки перестроит ваше приложение
Он работает для меня.
Другая причина, по которой может возникнуть эта ошибка, – это отсутствие index.html в . /YourApp/www/ !
Я только что последовал за ионным гидом , и один из шагов:
Источник