Fix crash when Assist app does not have settings activity.
Check for null settings activity before trying to create settings intent. If there is no settings activity, we will not show settings gear for the preference. Change-Id: I16f9d695cf9ef09ff65f4511d53d5778760125b5 Fix: 37161567 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user