Error al cargar diccionario al modificar android LatinIME en Eclipse
Estoy intentando agregar un diccionario inglés al teclado. Hasta ahora tengo:
- Echa un vistazo a la fuente de google
- Importó la carpeta java en eclipse como un código existente
- Añadido bibliotecas de soporte
Puedo ejecutar y construir el código, pero cuando selecciono el teclado se bloquea (todavía no he añadido el diccionario inglés o de otro tipo). El mensaje de error es el siguiente:
- Eclipse no abrirá archivos Xml de Android
- Error de Eclipse, "La selección no se puede iniciar y no hay lanzamientos recientes"
- Problemas de ADK y Eclipse - com.android.future y USBAccessory?
- Android: crea aplicaciones sin eclipse
- Eclipse Debugging Android no funciona
FATAL EXCEPTION: InitializeBinaryDictionary android.content.res.Resources$NotFoundException: File res/raw/main_en.dict from drawable resource ID #0x7f070003 at android.content.res.Resources.openRawResourceFd(Resources.java:1082) at com.android.inputmethod.latin.BinaryDictionaryGetter.loadFallbackResource(BinaryDictionaryGetter.java:92) at com.android.inputmethod.latin.BinaryDictionaryGetter.getDictionaryFiles(BinaryDictionaryGetter.java:328) at com.android.inputmethod.latin.DictionaryFactory.createMainDictionaryFromManager(DictionaryFactory.java:55) at com.android.inputmethod.latin.DictionaryFactory.createMainDictionaryFromManager(DictionaryFactory.java:83) at com.android.inputmethod.latin.Suggest$1.run(Suggest.java:115) Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed at android.content.res.AssetManager.openNonAssetFdNative(Native Method) at android.content.res.AssetManager.openNonAssetFd(AssetManager.java:429) at android.content.res.Resources.openRawResourceFd(Resources.java:1079) ... 5 more
Los métodos relevantes en el callstack están abajo:
public static ArrayList<AssetFileAddress> getDictionaryFiles(final Locale locale, final Context context) { final boolean hasDefaultWordList = DictionaryFactory.isDictionaryAvailable(context, locale); BinaryDictionaryFileDumper.cacheWordListsFromContentProvider(locale, context, hasDefaultWordList); final File[] cachedWordLists = getCachedWordLists(locale.toString(), context); final String mainDictId = DictionaryInfoUtils.getMainDictId(locale); final DictPackSettings dictPackSettings = new DictPackSettings(context); boolean foundMainDict = false; final ArrayList<AssetFileAddress> fileList = CollectionUtils.newArrayList(); // cachedWordLists may not be null, see doc for getCachedDictionaryList for (final File f : cachedWordLists) { final String wordListId = DictionaryInfoUtils.getWordListIdFromFileName(f.getName()); final boolean canUse = f.canRead() && hackCanUseDictionaryFile(locale, f); if (canUse && DictionaryInfoUtils.isMainWordListId(wordListId)) { foundMainDict = true; } if (!dictPackSettings.isWordListActive(wordListId)) continue; if (canUse) { final AssetFileAddress afa = AssetFileAddress.makeFromFileName(f.getPath()); if (null != afa) fileList.add(afa); } else { Log.e(TAG, "Found a cached dictionary file but cannot read or use it"); } } if (!foundMainDict && dictPackSettings.isWordListActive(mainDictId)) { final int fallbackResId = DictionaryInfoUtils.getMainDictionaryResourceId(context.getResources(), locale); final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId); if (null != fallbackAsset) { fileList.add(fallbackAsset); } } return fileList; } public static AssetFileAddress loadFallbackResource(final Context context, final int fallbackResId) { String str = context.getApplicationInfo().sourceDir; AssetFileDescriptor afd = context.getResources().openRawResourceFd(fallbackResId); if (afd == null) { Log.e(TAG, "Found the resource but cannot read it. Is it compressed? resId=" + fallbackResId); return null; } try { return AssetFileAddress.makeFromFileNameAndOffset(str, afd.getStartOffset(), afd.getLength()); } finally { try { afd.close(); } catch (IOException e) { // Ignored } } }
Estoy usando ADT 22 descarga de developer.goole.com
El problema es que no hay diccionario (ni siquiera la EN), por lo que el golpe no funciona. Cuando abro los diccionarios de complementos, aparece el mensaje "No hay diccionarios disponibles" en la lista.
Estoy probando en Samsung Galaxy Nexus con stock 4.3 rom y Nexus One Rom cook 4.0.4
Estoy desarrollando en Ubuntu 12.04.3 LTS
¿Alguna idea de cuál podría ser el problema?
- Cómo abrir un proyecto en eclipse
- Cómo abrir archivos xml de diseño en Android Layout Editor?
- Cómo generar R.java
- Problema que empuja archivo grande a Emulator / SDcard con Eclipse DDMS
- ¿Cómo puedo solucionar esta versión de la biblioteca de renderizado es más reciente que su versión de ADT plug-in en eclipse
- ADT necesita actualizar pero no encuentra ninguna actualización
- Comenzando en una nueva línea en el emulador (proyecto Android Eclipse)
- NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
- La animación de un elemento de vista de lista tiene efecto en varias filas
- android: Efecto de grabación de imágenes / Animación