Skip to content

feat: add support for API 35 EdgeToEdge #2187

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: version-9.1.0-dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Build with Gradle
run: ./scripts/build.sh
- name: Print Logs
if: failure()
run: ./scripts/print_build_logs.sh
- uses: actions/checkout@v2
- name: set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Build with Gradle
run: ./scripts/build.sh
- name: Print Logs
if: failure()
run: ./scripts/print_build_logs.sh
9 changes: 4 additions & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ plugins {
android {
compileSdk = Config.SdkVersions.compile

namespace = "com.firebase.uidemo"

defaultConfig {
minSdk = Config.SdkVersions.min
targetSdk = Config.SdkVersions.target
Expand Down Expand Up @@ -60,8 +62,8 @@ android {
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

buildFeatures {
Expand Down Expand Up @@ -95,9 +97,6 @@ dependencies {
implementation(Config.Libs.Misc.permissions)
implementation(Config.Libs.Androidx.constraint)
debugImplementation(Config.Libs.Misc.leakCanary)
debugImplementation(Config.Libs.Misc.leakCanaryFragments)
releaseImplementation(Config.Libs.Misc.leakCanaryNoop)
testImplementation(Config.Libs.Misc.leakCanaryNoop)
}

apply(plugin = "com.google.gms.google-services")
6 changes: 3 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.firebase.uidemo">
>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Expand Down Expand Up @@ -41,7 +41,7 @@
android:label="@string/title_auth_activity" />
<activity
android:name=".auth.AnonymousUpgradeActivity"
android:label="@string/title_anonymous_upgrade"/>
android:label="@string/title_anonymous_upgrade" />

<!-- Firestore demo -->
<activity
Expand Down Expand Up @@ -74,4 +74,4 @@

</application>

</manifest>
</manifest>
16 changes: 16 additions & 0 deletions app/src/main/java/com/firebase/uidemo/BaseActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.firebase.uidemo;

import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.WindowCompat;

public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Enable edge-to-edge for all activities
WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that this is just calling a single method, I'd prefer that we call this method in every other Activity rather than creating this new BaseActivity that is extended by all of them.

When we migrate the sample app to Kotlin, let's try to get rid of all of these "Base..." classes.

}
}
23 changes: 22 additions & 1 deletion app/src/main/java/com/firebase/uidemo/ChooserActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.util.ExtraConstants;
Expand All @@ -38,7 +43,7 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

public class ChooserActivity extends AppCompatActivity {
public class ChooserActivity extends BaseActivity {
private ActivityChooserBinding mBinding;

@Override
Expand All @@ -56,6 +61,22 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
mBinding = ActivityChooserBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());

// Set up toolbar
setSupportActionBar(mBinding.toolbar);
getSupportActionBar().setTitle(R.string.app_name);

// Handle the navigation bar padding
ViewCompat.setOnApplyWindowInsetsListener(mBinding.activities, (view, windowInsets) -> {
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars());
view.setPadding(
view.getPaddingLeft(),
view.getPaddingTop(),
view.getPaddingRight(),
insets.bottom
);
return WindowInsetsCompat.CONSUMED;
});

mBinding.activities.setLayoutManager(new LinearLayoutManager(this));
mBinding.activities.setAdapter(new ActivityChooserAdapter());
mBinding.activities.setHasFixedSize(true);
Expand Down
13 changes: 0 additions & 13 deletions app/src/main/java/com/firebase/uidemo/FirebaseUIDemo.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
package com.firebase.uidemo;

import com.squareup.leakcanary.LeakCanary;

import androidx.appcompat.app.AppCompatDelegate;
import androidx.multidex.MultiDexApplication;

public class FirebaseUIDemo extends MultiDexApplication {
static {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
}

@Override
public void onCreate() {
super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
LeakCanary.install(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.firebase.ui.auth.FirebaseAuthUIActivityResultContract;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.data.model.FirebaseAuthUIAuthenticationResult;
import com.firebase.uidemo.BaseActivity;
import com.firebase.uidemo.R;
import com.firebase.uidemo.databinding.ActivityAnonymousUpgradeBinding;
import com.firebase.uidemo.util.ConfigurationUtils;
Expand All @@ -28,9 +29,8 @@
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class AnonymousUpgradeActivity extends AppCompatActivity
public class AnonymousUpgradeActivity extends BaseActivity
implements ActivityResultCallback<FirebaseAuthUIAuthenticationResult> {

private static final String TAG = "AccountLink";
Expand Down
21 changes: 5 additions & 16 deletions app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.firebase.ui.auth.data.model.FirebaseAuthUIAuthenticationResult;
import com.firebase.ui.auth.util.ExtraConstants;
import com.firebase.uidemo.R;
import com.firebase.uidemo.BaseActivity;
import com.firebase.uidemo.databinding.AuthUiLayoutBinding;
import com.firebase.uidemo.util.ConfigurationUtils;
import com.google.android.gms.common.Scopes;
Expand All @@ -54,7 +55,7 @@
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;

public class AuthUiActivity extends AppCompatActivity
public class AuthUiActivity extends BaseActivity
implements ActivityResultCallback<FirebaseAuthUIAuthenticationResult> {
private static final String TAG = "AuthUiActivity";

Expand Down Expand Up @@ -141,8 +142,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) {

mBinding.signIn.setOnClickListener(view -> signIn());

mBinding.signInSilent.setOnClickListener(view -> silentSignIn());

if (ConfigurationUtils.isGoogleMisconfigured(this)
|| ConfigurationUtils.isFacebookMisconfigured(this)) {
showSnackbar(R.string.configuration_required);
Expand Down Expand Up @@ -196,8 +195,7 @@ private Intent getSignInIntent(@Nullable String link) {
.setTheme(getSelectedTheme())
.setLogo(getSelectedLogo())
.setAvailableProviders(getSelectedProviders())
.setIsSmartLockEnabled(mBinding.credentialSelectorEnabled.isChecked(),
mBinding.hintSelectorEnabled.isChecked());
.setCredentialManagerEnabled(mBinding.credentialSelectorEnabled.isChecked());

if (mBinding.customLayout.isChecked()) {
AuthMethodPickerLayout customLayout = new AuthMethodPickerLayout
Expand Down Expand Up @@ -226,18 +224,9 @@ private Intent getSignInIntent(@Nullable String link) {
if (auth.getCurrentUser() != null && auth.getCurrentUser().isAnonymous()) {
builder.enableAnonymousUsersAutoUpgrade();
}
return builder.build();
}

public void silentSignIn() {
getAuthUI().silentSignIn(this, getSelectedProviders())
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
startSignedInActivity(null);
} else {
showSnackbar(R.string.sign_in_failed);
}
});
builder.setAlwaysShowSignInMethodScreen(true);
return builder.build();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.util.ExtraConstants;
import com.firebase.uidemo.BaseActivity;
import com.firebase.uidemo.R;
import com.firebase.uidemo.databinding.SignedInLayoutBinding;
import com.firebase.uidemo.storage.GlideApp;
Expand All @@ -49,11 +50,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;

import static com.firebase.ui.auth.AuthUI.EMAIL_LINK_PROVIDER;

public class SignedInActivity extends AppCompatActivity {
public class SignedInActivity extends BaseActivity {
private static final String TAG = "SignedInActivity";

private SignedInLayoutBinding mBinding;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.firebase.ui.auth.util.ui.ImeHelper;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.firebase.uidemo.BaseActivity;
import com.firebase.uidemo.R;
import com.firebase.uidemo.database.ChatHolder;
import com.firebase.uidemo.databinding.ActivityChatBinding;
Expand All @@ -23,7 +24,6 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

Expand All @@ -36,7 +36,7 @@
* Lists</a>.
*/
@SuppressLint("RestrictedApi")
public class FirestoreChatActivity extends AppCompatActivity
public class FirestoreChatActivity extends BaseActivity
implements FirebaseAuth.AuthStateListener {
private static final String TAG = "FirestoreChatActivity";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.firebase.ui.auth.util.ui.ImeHelper;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.firebase.uidemo.BaseActivity;
import com.firebase.uidemo.R;
import com.firebase.uidemo.database.ChatHolder;
import com.firebase.uidemo.databinding.ActivityChatBinding;
Expand All @@ -23,7 +24,6 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

Expand All @@ -36,7 +36,7 @@
* Lists</a>.
*/
@SuppressLint("RestrictedApi")
public class RealtimeDbChatActivity extends AppCompatActivity
public class RealtimeDbChatActivity extends BaseActivity
implements FirebaseAuth.AuthStateListener {
private static final String TAG = "RealtimeDatabaseDemo";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import android.widget.Toast;

import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.firebase.uidemo.BaseActivity;
import com.firebase.uidemo.BuildConfig;
import com.firebase.uidemo.R;
import com.firebase.uidemo.databinding.ActivityImageBinding;
Expand All @@ -27,12 +28,11 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;

public class ImageActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
public class ImageActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks {

private static final String TAG = "ImageDemo";
private static final int RC_CHOOSE_PHOTO = 101;
Expand Down
Loading
Loading