В 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).
Поэтому приложение работало над эмулятором, потому что был на моем локальном хосте и доступен для эмулятора.
Но когда я настраивал приложение на мобильный телефон, у меня была такая же ошибка, потому что 192.168.0.102 не была доступна из мобильной сети.
Если вы используете визуальную студию. После изменения config.xml иногда вам нужно это
Решение для чистой сборки перестроит ваше приложение
Он работает для меня.
Другая причина, по которой может возникнуть эта ошибка, – это отсутствие index.html в . /YourApp/www/ !
Я только что последовал за ионным гидом , и один из шагов: