summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Pietal <mpietal@google.com> 2019-09-12 09:18:39 -0700
committer android-build-merger <android-build-merger@google.com> 2019-09-12 09:18:39 -0700
commit9621fa911d06163058dd942f15f3ecf9bfd88f96 (patch)
tree665c238f5f477a16dc2343352de669b2343e25a6
parentcf213992f8c2804c0e6736fb54f169190d321e04 (diff)
parent636ae6a3863003850b2860e0e4abbb0891160885 (diff)
Merge "Resolver - Fix NGA (voice interaction) crash in resolver" into qt-qpr1-dev
am: 636ae6a386 Change-Id: Id349a7a0f82f5ed252a04e2e89d6e422f4e04de1
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java4
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java22
-rw-r--r--packages/SystemUI/AndroidManifest.xml4
3 files changed, 12 insertions, 18 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index de77aaae1653..38cb2cc1d553 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -1666,10 +1666,6 @@ public class ChooserActivity extends ResolverActivity {
mServiceConnections.clear();
}
- public void onSetupVoiceInteraction() {
- // Do nothing. We'll send the voice stuff ourselves.
- }
-
private void logDirectShareTargetReceived(int logCategory) {
final long queryTime =
logCategory == MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_SHORTCUT_MANAGER
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 58ce03baa136..407a85f1bb05 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -361,9 +361,6 @@ public class ResolverActivity extends Activity {
initSuspendedColorMatrix();
- if (isVoiceInteraction()) {
- onSetupVoiceInteraction();
- }
final Set<String> categories = intent.getCategories();
MetricsLogger.action(this, mAdapter.hasFilteredItem()
? MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_APP_FEATURED
@@ -442,24 +439,21 @@ public class ResolverActivity extends Activity {
mSuspendedMatrixColorFilter = new ColorMatrixColorFilter(matrix);
}
- /**
- * Perform any initialization needed for voice interaction.
- */
- public void onSetupVoiceInteraction() {
- // Do it right now. Subclasses may delay this and send it later.
- sendVoiceChoicesIfNeeded();
- }
-
public void sendVoiceChoicesIfNeeded() {
if (!isVoiceInteraction()) {
// Clearly not needed.
return;
}
-
final Option[] options = new Option[mAdapter.getCount()];
for (int i = 0, N = options.length; i < N; i++) {
- options[i] = optionForChooserTarget(mAdapter.getItem(i), i);
+ TargetInfo target = mAdapter.getItem(i);
+ if (target == null) {
+ // If this occurs, a new set of targets is being loaded. Let that complete,
+ // and have the next call to send voice choices proceed instead.
+ return;
+ }
+ options[i] = optionForChooserTarget(target, i);
}
mPickOptionRequest = new PickTargetOptionRequest(
@@ -1872,7 +1866,7 @@ public class ResolverActivity extends Activity {
}
}
-
+ sendVoiceChoicesIfNeeded();
postListReadyRunnable();
}
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 4f74605b4003..403e894a68e4 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -609,6 +609,10 @@
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
android:process=":ui"
android:visibleToInstantApps="true">
+ <intent-filter>
+ <action android:name="android.intent.action.CHOOSER" />
+ <category android:name="android.intent.category.VOICE" />
+ </intent-filter>
</activity>
<!-- Doze with notifications, run in main sysui process for every user -->