Merge "Resolver - Fix NGA (voice interaction) crash in resolver" into qt-qpr1-dev

This commit is contained in:
Matt Pietal
2019-09-12 14:37:59 +00:00
committed by Android (Google) Code Review
3 changed files with 12 additions and 18 deletions

View File

@@ -1666,10 +1666,6 @@ public class ChooserActivity extends ResolverActivity {
mServiceConnections.clear(); mServiceConnections.clear();
} }
public void onSetupVoiceInteraction() {
// Do nothing. We'll send the voice stuff ourselves.
}
private void logDirectShareTargetReceived(int logCategory) { private void logDirectShareTargetReceived(int logCategory) {
final long queryTime = final long queryTime =
logCategory == MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_SHORTCUT_MANAGER logCategory == MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_SHORTCUT_MANAGER

View File

@@ -361,9 +361,6 @@ public class ResolverActivity extends Activity {
initSuspendedColorMatrix(); initSuspendedColorMatrix();
if (isVoiceInteraction()) {
onSetupVoiceInteraction();
}
final Set<String> categories = intent.getCategories(); final Set<String> categories = intent.getCategories();
MetricsLogger.action(this, mAdapter.hasFilteredItem() MetricsLogger.action(this, mAdapter.hasFilteredItem()
? MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_APP_FEATURED ? MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_APP_FEATURED
@@ -442,24 +439,21 @@ public class ResolverActivity extends Activity {
mSuspendedMatrixColorFilter = new ColorMatrixColorFilter(matrix); 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() { public void sendVoiceChoicesIfNeeded() {
if (!isVoiceInteraction()) { if (!isVoiceInteraction()) {
// Clearly not needed. // Clearly not needed.
return; return;
} }
final Option[] options = new Option[mAdapter.getCount()]; final Option[] options = new Option[mAdapter.getCount()];
for (int i = 0, N = options.length; i < N; i++) { 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( mPickOptionRequest = new PickTargetOptionRequest(
@@ -1872,7 +1866,7 @@ public class ResolverActivity extends Activity {
} }
} }
sendVoiceChoicesIfNeeded();
postListReadyRunnable(); postListReadyRunnable();
} }

View File

@@ -609,6 +609,10 @@
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
android:process=":ui" android:process=":ui"
android:visibleToInstantApps="true"> android:visibleToInstantApps="true">
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
<category android:name="android.intent.category.VOICE" />
</intent-filter>
</activity> </activity>
<!-- Doze with notifications, run in main sysui process for every user --> <!-- Doze with notifications, run in main sysui process for every user -->