Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b2dd657 authored by Arc Wang's avatar Arc Wang
Browse files

Improve scalability of Settings deep link API

Avoid using 'two pane' and 'large screen' because
they are implementation details exposure.

Bug: 201662312
Test: build pass
Change-Id: Id3555f734ff11e31d2f4db0479331c4f27e9e715
parent f438abe0
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -107,8 +107,8 @@
    <uses-permission android:name="android.permission.READ_DREAM_STATE" />
    <uses-permission android:name="android.permission.READ_DREAM_SUPPRESSION" />
    <uses-permission android:name="android.permission.MANAGE_APP_HIBERNATION" />
    <uses-permission android:name="android.permission.LAUNCH_TWO_PANE_SETTINGS_DEEP_LINK" />
    <uses-permission android:name="android.permission.ALLOW_PLACE_IN_TWO_PANE_SETTINGS" />
    <uses-permission android:name="android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK" />
    <uses-permission android:name="android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS" />

    <application
            android:name=".SettingsApplication"
@@ -178,10 +178,10 @@
        <activity-alias android:name="DeepLinkHomepageActivity"
                android:label="@string/settings_label_launcher"
                android:exported="true"
                android:permission="android.permission.LAUNCH_TWO_PANE_SETTINGS_DEEP_LINK"
                android:permission="android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK"
                android:targetActivity=".homepage.SettingsHomepageActivity">
            <intent-filter>
                <action android:name="android.settings.SETTINGS_LARGE_SCREEN_DEEP_LINK" />
                <action android:name="android.settings.SETTINGS_EMBED_DEEP_LINK_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>
+3 −3
Original line number Diff line number Diff line
@@ -364,13 +364,13 @@ public class SettingsActivity extends SettingsBaseActivity

        // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it.
        final Intent trampolineIntent =
                new Intent(android.provider.Settings.ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK);
                new Intent(android.provider.Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY);
        trampolineIntent.replaceExtras(intent);
        trampolineIntent.putExtra(
                android.provider.Settings.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_URI,
                android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI,
                intent.toUri(Intent.URI_INTENT_SCHEME));
        trampolineIntent.putExtra(
                android.provider.Settings.EXTRA_SETTINGS_LARGE_SCREEN_HIGHLIGHT_MENU_KEY,
                android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY,
                mHighlightMenuKey);
        trampolineIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
        startActivity(trampolineIntent);
+8 −8
Original line number Diff line number Diff line
@@ -16,9 +16,9 @@

package com.android.settings.homepage;

import static android.provider.Settings.ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK;
import static android.provider.Settings.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_URI;
import static android.provider.Settings.EXTRA_SETTINGS_LARGE_SCREEN_HIGHLIGHT_MENU_KEY;
import static android.provider.Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY;
import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY;
import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI;

import android.animation.LayoutTransition;
import android.app.ActivityManager;
@@ -191,14 +191,14 @@ public class SettingsHomepageActivity extends FragmentActivity implements

        final Intent intent = getIntent();
        if (intent == null || !TextUtils.equals(intent.getAction(),
                ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK)) {
                ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY)) {
            return;
        }

        final String intentUriString = intent.getStringExtra(
                EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_URI);
                EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI);
        if (TextUtils.isEmpty(intentUriString)) {
            Log.e(TAG, "No EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_URI to deep link");
            Log.e(TAG, "No EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI to deep link");
            finish();
            return;
        }
@@ -250,9 +250,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements
    private String getHighlightMenuKey() {
        final Intent intent = getIntent();
        if (intent != null && TextUtils.equals(intent.getAction(),
                ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK)) {
                ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY)) {
            final String menuKey = intent.getStringExtra(
                    EXTRA_SETTINGS_LARGE_SCREEN_HIGHLIGHT_MENU_KEY);
                    EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY);
            if (!TextUtils.isEmpty(menuKey)) {
                return menuKey;
            }