summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorFan Zhang <zhfan@google.com>2018-07-17 10:12:30 -0700
committerFan Zhang <zhfan@google.com>2018-07-17 10:59:02 -0700
commitaf32e726e6eb30c938cdd355b5a11e87153c9c5d (patch)
tree4a11b686cbf2d4840989e546cc7e518b083ccc16 /src/com/android
parent9bd5b318fc451850a43386942bcb92b532b94573 (diff)
downloadpackages_apps_Settings-af32e726e6eb30c938cdd355b5a11e87153c9c5d.tar.gz
packages_apps_Settings-af32e726e6eb30c938cdd355b5a11e87153c9c5d.tar.bz2
packages_apps_Settings-af32e726e6eb30c938cdd355b5a11e87153c9c5d.zip
Allow activity to delegate onActivityResult to fragments
Change-Id: Iac388f1726269239313d666f3123f28348e0c90a Fixes: 111531567 Test: rototests
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/settings/SettingsActivity.java15
-rw-r--r--src/com/android/settings/core/OnActivityResultListener.java30
-rw-r--r--src/com/android/settings/notification/ConfigureNotificationSettings.java4
-rw-r--r--src/com/android/settings/notification/SoundSettings.java3
4 files changed, 50 insertions, 2 deletions
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index cafe5cf947..cacd04e535 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -46,6 +46,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.settings.Settings.WifiSettingsActivity;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.backup.BackupSettingsActivity;
+import com.android.settings.core.OnActivityResultListener;
import com.android.settings.core.SettingsBaseActivity;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.gateway.SettingsGateway;
@@ -64,6 +65,7 @@ import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList;
import java.util.List;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -375,6 +377,19 @@ public class SettingsActivity extends SettingsBaseActivity
}
}
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ final List<Fragment> fragments = getSupportFragmentManager().getFragments();
+ if (fragments != null) {
+ for (Fragment fragment : fragments) {
+ if (fragment instanceof OnActivityResultListener) {
+ fragment.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+ }
+ }
+
@VisibleForTesting
void launchSettingFragment(String initialFragmentName, boolean isSubSettings, Intent intent) {
if (!mIsShowingDashboard && initialFragmentName != null) {
diff --git a/src/com/android/settings/core/OnActivityResultListener.java b/src/com/android/settings/core/OnActivityResultListener.java
new file mode 100644
index 0000000000..5832c7f892
--- /dev/null
+++ b/src/com/android/settings/core/OnActivityResultListener.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.core;
+
+import android.app.Activity;
+import android.content.Intent;
+
+/**
+ * This interface marks a class that it wants to listen to
+ * {@link Activity#onActivityResult(int, int, Intent)}.
+ *
+ * Whenever {@link com.android.settings.SettingsActivity} receives an activity result, it will
+ * propagate the data to this interface so it has a chance to inspect and handle activity results.
+ */
+public interface OnActivityResultListener {
+}
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 2b5a8abc9d..7120cf6130 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -27,6 +27,7 @@ import android.provider.SearchIndexableResource;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.RingtonePreference;
+import com.android.settings.core.OnActivityResultListener;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -44,7 +45,8 @@ import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
@SearchIndexable
-public class ConfigureNotificationSettings extends DashboardFragment {
+public class ConfigureNotificationSettings extends DashboardFragment implements
+ OnActivityResultListener {
private static final String TAG = "ConfigNotiSettings";
@VisibleForTesting
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index dafc538907..cc3b7c9f7d 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -31,6 +31,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.RingtonePreference;
+import com.android.settings.core.OnActivityResultListener;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.sound.HandsFreeProfileOutputPreferenceController;
@@ -51,7 +52,7 @@ import androidx.preference.ListPreference;
import androidx.preference.Preference;
@SearchIndexable
-public class SoundSettings extends DashboardFragment {
+public class SoundSettings extends DashboardFragment implements OnActivityResultListener {
private static final String TAG = "SoundSettings";
private static final String SELECTED_PREFERENCE_KEY = "selected_preference";