aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/dictionarypack
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/dictionarypack')
-rw-r--r--java/src/com/android/inputmethod/dictionarypack/DictionaryService.java19
-rw-r--r--java/src/com/android/inputmethod/dictionarypack/DownloadOverMeteredDialog.java8
-rw-r--r--java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java5
3 files changed, 21 insertions, 11 deletions
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryService.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryService.java
index e6acb8f36..c678f081d 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryService.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryService.java
@@ -22,6 +22,7 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
+import android.util.Log;
import android.widget.Toast;
import com.android.inputmethod.latin.R;
@@ -33,6 +34,8 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nonnull;
+
/**
* Service that handles background tasks for the dictionary provider.
*
@@ -51,6 +54,8 @@ import java.util.concurrent.TimeUnit;
* to access, and mark the current state as such.
*/
public final class DictionaryService extends Service {
+ private static final String TAG = DictionaryService.class.getSimpleName();
+
/**
* The package name, to use in the intent actions.
*/
@@ -156,9 +161,14 @@ public final class DictionaryService extends Service {
final int startId) {
final DictionaryService self = this;
if (SHOW_DOWNLOAD_TOAST_INTENT_ACTION.equals(intent.getAction())) {
- // This is a UI action, it can't be run in another thread
- showStartDownloadingToast(this, LocaleUtils.constructLocaleFromString(
- intent.getStringExtra(LOCALE_INTENT_ARGUMENT)));
+ final String localeString = intent.getStringExtra(LOCALE_INTENT_ARGUMENT);
+ if (localeString == null) {
+ Log.e(TAG, "Received " + intent.getAction() + " without locale; skipped");
+ } else {
+ // This is a UI action, it can't be run in another thread
+ showStartDownloadingToast(
+ this, LocaleUtils.constructLocaleFromString(localeString));
+ }
} else {
// If it's a command that does not require UI, arrange for the work to be done on a
// separate thread, so that we can return right away. The executor will spawn a thread
@@ -245,7 +255,8 @@ public final class DictionaryService extends Service {
/**
* Shows a toast informing the user that an automatic dictionary download is starting.
*/
- private static void showStartDownloadingToast(final Context context, final Locale locale) {
+ private static void showStartDownloadingToast(final Context context,
+ @Nonnull final Locale locale) {
final String toastText = String.format(
context.getString(R.string.toast_downloading_suggestions),
locale.getDisplayName());
diff --git a/java/src/com/android/inputmethod/dictionarypack/DownloadOverMeteredDialog.java b/java/src/com/android/inputmethod/dictionarypack/DownloadOverMeteredDialog.java
index 50b3c72f3..91ed673ae 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DownloadOverMeteredDialog.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DownloadOverMeteredDialog.java
@@ -28,7 +28,7 @@ import com.android.inputmethod.annotations.ExternallyReferenced;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.common.LocaleUtils;
-import java.util.Locale;
+import javax.annotation.Nullable;
/**
* This implements the dialog for asking the user whether it's okay to download dictionaries over
@@ -54,11 +54,11 @@ public final class DownloadOverMeteredDialog extends Activity {
setTexts(localeString, size);
}
- private void setTexts(final String localeString, final long size) {
+ private void setTexts(@Nullable final String localeString, final long size) {
final String promptFormat = getString(R.string.should_download_over_metered_prompt);
final String allowButtonFormat = getString(R.string.download_over_metered);
- final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
- final String language = (null == locale ? "" : locale.getDisplayLanguage());
+ final String language = (null == localeString) ? ""
+ : LocaleUtils.constructLocaleFromString(localeString).getDisplayLanguage();
final TextView prompt = (TextView)findViewById(R.id.download_over_metered_prompt);
prompt.setText(Html.fromHtml(String.format(promptFormat, language)));
final Button allowButton = (Button)findViewById(R.id.allow_button);
diff --git a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
index aeb666704..f05db9dab 100644
--- a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
+++ b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
@@ -57,7 +57,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
@@ -880,8 +879,8 @@ public final class UpdateHandler {
// None of those are expected to happen, but just in case...
if (null == notificationIntent || null == notificationManager) return;
- final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
- final String language = (null == locale ? "" : locale.getDisplayLanguage());
+ final String language = (null == localeString) ? ""
+ : LocaleUtils.constructLocaleFromString(localeString).getDisplayLanguage();
final String titleFormat = context.getString(R.string.dict_available_notification_title);
final String notificationTitle = String.format(titleFormat, language);
final Notification.Builder builder = new Notification.Builder(context)