Merge "Fix crash when Assist app does not have settings activity." into oc-dev am: 0b7e3e056a

am: 6210546942

Change-Id: I19a813bbd56e9cb5ffefe680ad11efdd52c7503a
This commit is contained in:
Doris Ling
2017-04-14 23:05:47 +00:00
committed by android-build-merger
2 changed files with 64 additions and 5 deletions

View File

@@ -24,6 +24,7 @@ import android.content.pm.ResolveInfo;
import android.service.voice.VoiceInteractionService;
import android.service.voice.VoiceInteractionServiceInfo;
import android.support.annotation.VisibleForTesting;
import com.android.internal.app.AssistUtils;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPreferenceController;
@@ -56,13 +57,10 @@ public class DefaultAssistPreferenceController extends DefaultAppPreferenceContr
if (services == null || services.isEmpty()) {
return null;
}
final ResolveInfo resolveInfo = services.get(0);
final VoiceInteractionServiceInfo voiceInfo =
new VoiceInteractionServiceInfo(pm, resolveInfo.serviceInfo);
if (!voiceInfo.getSupportsAssist()) {
final String activity = getAssistSettingsActivity(cn, services.get(0), pm);
if (activity == null) {
return null;
}
final String activity = voiceInfo.getSettingsActivity();
return new Intent(Intent.ACTION_MAIN)
.setComponent(new ComponentName(cn.getPackageName(), activity));
}
@@ -85,4 +83,14 @@ public class DefaultAssistPreferenceController extends DefaultAppPreferenceContr
}
return new DefaultAppInfo(mPackageManager, mUserId, cn);
}
@VisibleForTesting
String getAssistSettingsActivity(ComponentName cn, ResolveInfo resolveInfo, PackageManager pm) {
final VoiceInteractionServiceInfo voiceInfo =
new VoiceInteractionServiceInfo(pm, resolveInfo.serviceInfo);
if (!voiceInfo.getSupportsAssist()) {
return null;
}
return voiceInfo.getSettingsActivity();
}
}