Register the rule for injected apps

We should align behavior between injected apps and in-app entries.

Test: Open the Google/DW page and click back key. Then, app is closed
directly.
Fix: 204406425

Change-Id: I57831c4df78b502b3998b3f7384df2900dbfe56f
This commit is contained in:
Tsung-Mao Fang
2021-10-28 16:36:21 +08:00
parent 9b325cd54f
commit bb24a2f63b

View File

@@ -60,6 +60,8 @@ import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
import com.android.settings.homepage.TopLevelSettings;
import com.android.settings.overlay.FeatureFactory;
@@ -170,7 +172,17 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
}
pref.setOnPreferenceClickListener(preference -> {
OnCancelListener listener = null;
if (fragment instanceof TopLevelSettings) {
if (fragment instanceof TopLevelSettings
&& ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) {
// Register the rule for injected apps.
ActivityEmbeddingRulesController.registerTwoPanePairRule(mContext,
new ComponentName(activity.getPackageName(),
com.android.settings.Settings.class.getName()),
new ComponentName(tile.getPackageName(),
tile.getComponentName()),
null, true, true);
// Highlight preference ui.
final TopLevelSettings topLevelSettings = (TopLevelSettings) fragment;
// Highlight the tile immediately whenever it's clicked
topLevelSettings.setHighlightPreferenceKey(key);