Merge "Navigate to Install unknown apps in SPA"
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index e50973b..24bd192 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -60,6 +60,7 @@
import android.preference.PreferenceFrameLayout;
import android.text.TextUtils;
import android.util.ArraySet;
+import android.util.FeatureFlagUtils;
import android.util.IconDrawableFactory;
import android.util.Log;
import android.view.LayoutInflater;
@@ -131,6 +132,8 @@
import com.android.settings.notification.ConfigureNotificationSettings;
import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.app.AppNotificationSettings;
+import com.android.settings.spa.SpaActivity;
+import com.android.settings.spa.app.InstallUnknownAppsListProvider;
import com.android.settings.widget.LoadingViewController;
import com.android.settings.wifi.AppStateChangeWifiStateBridge;
import com.android.settings.wifi.ChangeWifiStateDetails;
@@ -270,20 +273,36 @@
private AppBarLayout mAppBarLayout;
@Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+
+ if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
+ return;
+ }
+ Activity activity = getActivity();
+ final String className = getClassName(activity.getIntent(), getArguments());
+ if (className.equals(ManageExternalSourcesActivity.class.getName())) {
+ SpaActivity.startSpaActivity(
+ context, InstallUnknownAppsListProvider.INSTANCE.getRoute());
+ activity.finish();
+ }
+ }
+
+ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
final Activity activity = getActivity();
+ if (activity.isFinishing()) {
+ return;
+ }
+ setHasOptionsMenu(true);
mUserManager = activity.getSystemService(UserManager.class);
mApplicationsState = ApplicationsState.getInstance(activity.getApplication());
Intent intent = activity.getIntent();
Bundle args = getArguments();
final int screenTitle = getTitleResId(intent, args);
- String className = args != null ? args.getString(EXTRA_CLASSNAME) : null;
- if (className == null) {
- className = intent.getComponent().getClassName();
- }
+ final String className = getClassName(intent, args);
if (className.equals(StorageUseActivity.class.getName())) {
if (args != null && args.containsKey(EXTRA_VOLUME_UUID)) {
mVolumeUuid = args.getString(EXTRA_VOLUME_UUID);
@@ -399,6 +418,9 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ if (getActivity().isFinishing()) {
+ return null;
+ }
if (mListType == LIST_TYPE_OVERLAY && !Utils.isSystemAlertWindowEnabled(getContext())) {
mRootView = inflater.inflate(R.layout.manage_applications_apps_unsupported, null);
setHasOptionsMenu(false);
@@ -568,7 +590,9 @@
if (mApplications != null) {
mApplications.pause();
}
- mResetAppsHelper.stop();
+ if (mResetAppsHelper != null) {
+ mResetAppsHelper.stop();
+ }
}
@Override
@@ -931,10 +955,7 @@
public static int getTitleResId(@NonNull Intent intent, Bundle args) {
int screenTitle = intent.getIntExtra(
SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.all_apps);
- String className = args != null ? args.getString(EXTRA_CLASSNAME) : null;
- if (className == null) {
- className = intent.getComponent().getClassName();
- }
+ String className = getClassName(intent, args);
if (className.equals(Settings.UsageAccessSettingsActivity.class.getName())) {
screenTitle = R.string.usage_access;
} else if (className.equals(Settings.HighPowerApplicationsActivity.class.getName())) {
@@ -969,6 +990,14 @@
return screenTitle;
}
+ private static String getClassName(@NonNull Intent intent, Bundle args) {
+ String className = args != null ? args.getString(EXTRA_CLASSNAME) : null;
+ if (className == null) {
+ className = intent.getComponent().getClassName();
+ }
+ return className;
+ }
+
static class FilterSpinnerAdapter extends SettingsSpinnerAdapter<CharSequence> {
private final ManageApplications mManageApplications;
diff --git a/src/com/android/settings/spa/SpaActivity.kt b/src/com/android/settings/spa/SpaActivity.kt
index 7e79350..729668e 100644
--- a/src/com/android/settings/spa/SpaActivity.kt
+++ b/src/com/android/settings/spa/SpaActivity.kt
@@ -16,6 +16,19 @@
package com.android.settings.spa
+import android.content.Context
+import android.content.Intent
import com.android.settingslib.spa.framework.BrowseActivity
-class SpaActivity : BrowseActivity(settingsPageProviders)
+class SpaActivity : BrowseActivity(settingsPageProviders) {
+ companion object {
+ @JvmStatic
+ fun startSpaActivity(context: Context, startDestination: String) {
+ val intent = Intent(context, SpaActivity::class.java).apply {
+ putExtra(KEY_DESTINATION, startDestination)
+ }
+ context.startActivity(intent)
+ }
+ }
+}
+