Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
5 changes: 0 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@
android:theme="@style/AppThemeActionBar"
tools:targetApi="33">

<activity
android:name=".ui.screens.startup.StartupActivity"
android:noHistory="true"
android:theme="@style/AppTheme" />

<activity
android:name=".ui.screens.main.MainActivity"
android:exported="true"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.d4rk.androidtutorials.java.ui.screens.main;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;

Expand Down Expand Up @@ -33,8 +33,8 @@
import com.d4rk.androidtutorials.java.databinding.ActivityMainBinding;
import com.d4rk.androidtutorials.java.notifications.managers.AppUpdateNotificationsManager;
import com.d4rk.androidtutorials.java.ui.components.navigation.BottomSheetMenuFragment;
import com.d4rk.androidtutorials.java.ui.screens.startup.StartupActivity;
import com.d4rk.androidtutorials.java.ui.screens.startup.StartupViewModel;
import com.d4rk.androidtutorials.java.ui.screens.startup.dialogs.ConsentDialogFragment;
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
import com.google.android.gms.ads.AdRequest;
Expand Down Expand Up @@ -120,10 +120,6 @@ protected void onCreate(Bundle savedInstanceState) {
setupActionBar();
observeViewModel();

Handler handler = new Handler(Looper.getMainLooper());
long snackbarInterval = 60L * 24 * 60 * 60 * 1000;
handler.postDelayed(this::showSnackbar, snackbarInterval);

setupUpdateNotifications();

String[] themeValues = getResources().getStringArray(R.array.preference_theme_values);
Expand All @@ -132,11 +128,15 @@ protected void onCreate(Bundle savedInstanceState) {
mainViewModel.applySettings(themeValues, bottomNavBarLabelsValues, defaultTabValues);
if (mainViewModel.shouldShowStartupScreen()) {
mainViewModel.markStartupScreenShown();
startActivity(new Intent(this, StartupActivity.class));
showConsentDialog();
}

launcherShortcuts();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1);
}

this.appUpdateManager = mainViewModel.getAppUpdateManager();

registerInstallStateListener();
Expand Down Expand Up @@ -240,8 +240,11 @@ private void setupUpdateNotifications() {
appUpdateNotificationsManager = new AppUpdateNotificationsManager(this);
}

private void showSnackbar() {
Snackbar.make(mBinding.getRoot(), "Hello after 1 day!", Snackbar.LENGTH_LONG).show();
private void showConsentDialog() {
ConsentDialogFragment dialog = new ConsentDialogFragment();
dialog.setConsentListener((analytics, adStorage, adUserData, adPersonalization) ->
ConsentUtils.updateFirebaseConsent(this, analytics, adStorage, adUserData, adPersonalization));
dialog.show(getSupportFragmentManager(), "consent_dialog");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,66 +1,26 @@
package com.d4rk.androidtutorials.java.ui.screens.startup;

import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;

import com.d4rk.androidtutorials.java.R;
import com.d4rk.androidtutorials.java.databinding.ActivityStartupBinding;
import com.d4rk.androidtutorials.java.ui.screens.main.MainActivity;
import com.d4rk.androidtutorials.java.ui.screens.startup.dialogs.ConsentDialogFragment;
import com.google.android.ump.ConsentInformation;
import com.google.android.ump.ConsentRequestParameters;
import com.google.android.ump.UserMessagingPlatform;
import com.d4rk.androidtutorials.java.utils.ConsentUtils;


import me.zhanghai.android.fastscroll.FastScrollerBuilder;

import dagger.hilt.android.AndroidEntryPoint;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;

@AndroidEntryPoint
public class StartupActivity extends AppCompatActivity {

private StartupViewModel startupViewModel;
private ConsentInformation consentInformation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
com.d4rk.androidtutorials.java.databinding.ActivityStartupBinding binding = ActivityStartupBinding.inflate(getLayoutInflater());
ActivityStartupBinding binding = ActivityStartupBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

ConsentUtils.applyStoredConsent(this);

startupViewModel = new ViewModelProvider(this).get(StartupViewModel.class);

consentInformation = UserMessagingPlatform.getConsentInformation(this);
ConsentRequestParameters params = new ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(false)
.build();

startupViewModel.requestConsentInfoUpdate(
this,
params,
() -> {
if (consentInformation.isConsentFormAvailable()) {
startupViewModel.loadConsentForm(
this,
formError -> ConsentUtils.updateFirebaseConsent(this,
false, false, false, false)
);
} else if (consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.OBTAINED) {
ConsentUtils.applyStoredConsent(this);
}
},
formError -> {}
);

new FastScrollerBuilder(binding.scrollView)
.useMd2Style()
.build();
Expand All @@ -71,23 +31,8 @@ protected void onCreate(Bundle savedInstanceState) {
);

binding.floatingButtonAgree.setOnClickListener(v -> {
ConsentDialogFragment dialog = new ConsentDialogFragment();
dialog.setConsentListener((analytics, adStorage, adUserData, adPersonalization) -> {
ConsentUtils.updateFirebaseConsent(this,
analytics, adStorage, adUserData, adPersonalization);
proceedToMainActivity();
});
dialog.show(getSupportFragmentManager(), "consent_dialog");
startActivity(new Intent(this, MainActivity.class));
finish();
});

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1);
}
}

private void proceedToMainActivity() {
startActivity(new Intent(this, MainActivity.class));
finish();
}

}