Loading java/src/com/android/inputmethod/latin/LatinIME.java +11 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Rect; Loading Loading @@ -80,7 +81,7 @@ import java.util.Locale; * Input method implementation for Qwerty'ish keyboard. */ public class LatinIME extends InputMethodService implements KeyboardActionListener, SuggestionsView.Listener { SuggestionsView.Listener, TargetApplicationGetter.OnTargetApplicationKnownListener { private static final String TAG = LatinIME.class.getSimpleName(); private static final boolean TRACE = false; private static boolean DEBUG; Loading Loading @@ -152,6 +153,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private SuggestionsView mSuggestionsView; /* package for tests */ Suggest mSuggest; private CompletionInfo[] mApplicationSpecifiedCompletions; private ApplicationInfo mTargetApplicationInfo; private InputMethodManagerCompatWrapper mImm; private Resources mResources; Loading Loading @@ -665,6 +667,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen Log.w(TAG, "Use EditorInfo.IME_FLAG_FORCE_ASCII flag instead"); } mTargetApplicationInfo = null; new TargetApplicationGetter(this /* context */, this /* listener */) .execute(editorInfo.packageName); LatinImeLogger.onStartInputView(editorInfo); // In landscape mode, this method gets called without the input view being created. if (inputView == null) { Loading Loading @@ -718,6 +724,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen if (TRACE) Debug.startMethodTracing("/data/trace/latinime"); } public void onTargetApplicationKnown(final ApplicationInfo info) { mTargetApplicationInfo = info; } @Override public void onWindowHidden() { super.onWindowHidden(); Loading java/src/com/android/inputmethod/latin/TargetApplicationGetter.java 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.android.inputmethod.latin; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.AsyncTask; public class TargetApplicationGetter extends AsyncTask<String, Void, ApplicationInfo> { public interface OnTargetApplicationKnownListener { public void onTargetApplicationKnown(final ApplicationInfo info); } private Context mContext; private final OnTargetApplicationKnownListener mListener; public TargetApplicationGetter(final Context context, final OnTargetApplicationKnownListener listener) { mContext = context; mListener = listener; } @Override protected ApplicationInfo doInBackground(final String... packageName) { // TODO: cache app info. Wipe the cache when new packages are installed. final PackageManager pm = mContext.getPackageManager(); mContext = null; // Bazooka-powered anti-leak device try { final ApplicationInfo targetAppInfo = pm.getApplicationInfo(packageName[0], 0 /* flags */); return targetAppInfo; } catch (android.content.pm.PackageManager.NameNotFoundException e) { return null; } } @Override protected void onPostExecute(final ApplicationInfo info) { mListener.onTargetApplicationKnown(info); } } Loading
java/src/com/android/inputmethod/latin/LatinIME.java +11 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Rect; Loading Loading @@ -80,7 +81,7 @@ import java.util.Locale; * Input method implementation for Qwerty'ish keyboard. */ public class LatinIME extends InputMethodService implements KeyboardActionListener, SuggestionsView.Listener { SuggestionsView.Listener, TargetApplicationGetter.OnTargetApplicationKnownListener { private static final String TAG = LatinIME.class.getSimpleName(); private static final boolean TRACE = false; private static boolean DEBUG; Loading Loading @@ -152,6 +153,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private SuggestionsView mSuggestionsView; /* package for tests */ Suggest mSuggest; private CompletionInfo[] mApplicationSpecifiedCompletions; private ApplicationInfo mTargetApplicationInfo; private InputMethodManagerCompatWrapper mImm; private Resources mResources; Loading Loading @@ -665,6 +667,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen Log.w(TAG, "Use EditorInfo.IME_FLAG_FORCE_ASCII flag instead"); } mTargetApplicationInfo = null; new TargetApplicationGetter(this /* context */, this /* listener */) .execute(editorInfo.packageName); LatinImeLogger.onStartInputView(editorInfo); // In landscape mode, this method gets called without the input view being created. if (inputView == null) { Loading Loading @@ -718,6 +724,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen if (TRACE) Debug.startMethodTracing("/data/trace/latinime"); } public void onTargetApplicationKnown(final ApplicationInfo info) { mTargetApplicationInfo = info; } @Override public void onWindowHidden() { super.onWindowHidden(); Loading
java/src/com/android/inputmethod/latin/TargetApplicationGetter.java 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.android.inputmethod.latin; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.AsyncTask; public class TargetApplicationGetter extends AsyncTask<String, Void, ApplicationInfo> { public interface OnTargetApplicationKnownListener { public void onTargetApplicationKnown(final ApplicationInfo info); } private Context mContext; private final OnTargetApplicationKnownListener mListener; public TargetApplicationGetter(final Context context, final OnTargetApplicationKnownListener listener) { mContext = context; mListener = listener; } @Override protected ApplicationInfo doInBackground(final String... packageName) { // TODO: cache app info. Wipe the cache when new packages are installed. final PackageManager pm = mContext.getPackageManager(); mContext = null; // Bazooka-powered anti-leak device try { final ApplicationInfo targetAppInfo = pm.getApplicationInfo(packageName[0], 0 /* flags */); return targetAppInfo; } catch (android.content.pm.PackageManager.NameNotFoundException e) { return null; } } @Override protected void onPostExecute(final ApplicationInfo info) { mListener.onTargetApplicationKnown(info); } }