aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java')
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java29
1 files changed, 19 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 3da670e2e..ed5f83b3b 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -98,23 +98,32 @@ public class BinaryDictionaryFileDumper {
* @throw IOException if the provider-returned data could not be read.
*/
public static List<AssetFileAddress> cacheDictionariesFromContentProvider(final Locale locale,
- final Context context) throws FileNotFoundException, IOException {
+ final Context context) {
final ContentResolver resolver = context.getContentResolver();
final List<String> idList = getDictIdList(locale, context);
final List<AssetFileAddress> fileAddressList = new ArrayList<AssetFileAddress>();
for (String id : idList) {
final Uri wordListUri = getProviderUri(id);
- final AssetFileDescriptor afd =
- resolver.openAssetFileDescriptor(wordListUri, "r");
+ AssetFileDescriptor afd = null;
+ try {
+ afd = resolver.openAssetFileDescriptor(wordListUri, "r");
+ } catch (FileNotFoundException e) {
+ // leave null inside afd and continue
+ }
if (null == afd) continue;
- final String fileName = copyFileTo(afd.createInputStream(),
- BinaryDictionaryGetter.getCacheFileName(id, locale, context));
- afd.close();
- if (0 >= resolver.delete(wordListUri, null, null)) {
- // I'd rather not print the word list ID to the log here out of security concerns
- Log.e(TAG, "Could not have the dictionary pack delete a word list");
+ try {
+ final String fileName = copyFileTo(afd.createInputStream(),
+ BinaryDictionaryGetter.getCacheFileName(id, locale, context));
+ afd.close();
+ if (0 >= resolver.delete(wordListUri, null, null)) {
+ // I'd rather not print the word list ID to the log out of security concerns
+ Log.e(TAG, "Could not have the dictionary pack delete a word list");
+ }
+ fileAddressList.add(AssetFileAddress.makeFromFileName(fileName));
+ } catch (IOException e) {
+ // Can't read the file for some reason. Continue onto the next file.
+ Log.e(TAG, "Cannot read a word list from the dictionary pack : " + e);
}
- fileAddressList.add(AssetFileAddress.makeFromFileName(fileName));
}
return fileAddressList;
}