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

Commit a01ad58f authored by Jordan Hayes's avatar Jordan Hayes
Browse files

Bump minSdk to 36

Bumping the minSdk to 36 significantly reduces the cost of integrating
the Android Baklava CP2 default account changes into the app.

However the bump requires addressing Edge to Edge issues, due to the
Edge to Edge opt out being deprecated, see
https://developer.android.com/about/versions/16/behavior-changes-16#edge-to-edge

Test: manual and ran test suite
Flag: NONE unflaggable sdk bump
Change-Id: I98ecc4591488a6eae0bef43761e6f8ac33c2fc0e
parent aa47351b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@
          android:versionName="1.7.34">

    <uses-sdk
        android:minSdkVersion="34"
        android:targetSdkVersion="34"/>
        android:minSdkVersion="36"
        android:targetSdkVersion="36"/>

    <original-package android:name="com.android.contacts"/>

+69 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.contacts;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
@@ -24,8 +25,14 @@ import android.provider.ContactsContract;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.android.contacts.model.account.AccountType;

import com.google.i18n.phonenumbers.NumberParseException;
@@ -248,4 +255,66 @@ public class MoreContactUtils {
        intent.setData(lookupUri);
        return intent;
    }

    /**
     * Enable new edge to edge feature.
     *
     * @param activity the Activity need to setup the edge to edge feature.
     */
    public static void setupEdgeToEdge(@NonNull Activity activity, EdgeToEdgeInsetHandler handler) {
        ViewCompat.setOnApplyWindowInsetsListener(
                activity.findViewById(android.R.id.content),
                (v, windowInsets) -> {
                    final Insets insets =
                            windowInsets.getInsets(
                                    WindowInsetsCompat.Type.systemBars()
                                            | WindowInsetsCompat.Type.ime()
                                            | WindowInsetsCompat.Type.displayCutout());

                    // Apply the insets paddings to the view.
                    v.setPadding(
                            insets.left,
                            handler == null ? insets.top : v.getPaddingTop(),
                            insets.right,
                            insets.bottom);

                    if (handler != null) {
                        handler.applyTopInset(insets.top);
                    }

                    // Return CONSUMED if you don't want the window insets to keep being
                    // passed down to descendant views.
                    return WindowInsetsCompat.CONSUMED;
                });
    }

    /** Handles setting the insets on a {@link View}. */
    public static class EdgeToEdgeInsetHandler {

        private final View mView;

        private int mOriginalHeight = -1;
        private int mOriginalPaddingTop = -1;

        public EdgeToEdgeInsetHandler(View view) {
            mView = view;
        }

        public void applyTopInset(int top) {
            ViewGroup.LayoutParams layoutParams = mView.getLayoutParams();
            if (mOriginalHeight == -1) {
                mOriginalHeight = layoutParams.height;
            }
            if (mOriginalPaddingTop == -1) {
                mOriginalPaddingTop = mView.getPaddingTop();
            }
            layoutParams.height = mOriginalHeight + top;
            mView.setLayoutParams(layoutParams);
            mView.setPadding(
                    mView.getPaddingLeft(),
                    mOriginalPaddingTop + top,
                    mView.getPaddingRight(),
                    mView.getPaddingBottom());
        }
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import androidx.collection.ArrayMap;
import androidx.core.view.ViewCompat;
import androidx.core.widget.ContentLoadingProgressBar;

import com.android.contacts.MoreContactUtils;
import com.android.contacts.MoreContactUtils.EdgeToEdgeInsetHandler;
import com.android.contacts.compat.CompatUtils;
import com.android.contacts.database.SimContactDao;
import com.android.contacts.editor.AccountHeaderPresenter;
@@ -163,6 +165,7 @@ public class SimImportFragment extends Fragment
                });

        mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
        MoreContactUtils.setupEdgeToEdge(getActivity(), new EdgeToEdgeInsetHandler(mToolbar));
        mToolbar.setNavigationOnClickListener(
                new View.OnClickListener() {
                    @Override
+3 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import androidx.appcompat.widget.Toolbar;
import com.android.contacts.AppCompatContactsActivity;
import com.android.contacts.ContactSaveService;
import com.android.contacts.DynamicShortcuts;
import com.android.contacts.MoreContactUtils;
import com.android.contacts.MoreContactUtils.EdgeToEdgeInsetHandler;
import com.android.contacts.R;
import com.android.contacts.detail.PhotoSelectionHandler;
import com.android.contacts.editor.ContactEditorFragment;
@@ -310,6 +312,7 @@ public class ContactEditorActivity extends AppCompatContactsActivity

        setContentView(R.layout.contact_editor_activity);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        MoreContactUtils.setupEdgeToEdge(this, new EdgeToEdgeInsetHandler(mToolbar));
        setSupportActionBar(mToolbar);
        if (Intent.ACTION_EDIT.equals(action)) {
            mActionBarTitleResId = R.string.contact_editor_title_existing_contact;
+4 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;

import com.android.contacts.AppCompatContactsActivity;
import com.android.contacts.MoreContactUtils;
import com.android.contacts.MoreContactUtils.EdgeToEdgeInsetHandler;
import com.android.contacts.R;
import com.android.contacts.editor.EditorIntents;
import com.android.contacts.list.ContactEntryListFragment;
@@ -149,6 +151,8 @@ public class ContactSelectionActivity extends AppCompatContactsActivity

    private void prepareSearchViewAndActionBar(Bundle savedState) {
        mToolbar = getView(R.id.toolbar);
        MoreContactUtils.setupEdgeToEdge(
                this, new EdgeToEdgeInsetHandler(findViewById(R.id.toolbar_frame)));
        setSupportActionBar(mToolbar);

        // Add a shadow under the toolbar.
Loading