Skip to content

Commit c9873b8

Browse files
Merge pull request #71 from MihaiCristianCondrea/codex/update-instant-app-launch-behavior
Bypass startup screen and handle consent in MainActivity
2 parents 1fffc1a + 2555a49 commit c9873b8

File tree

3 files changed

+17
-74
lines changed

3 files changed

+17
-74
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@
3535
android:theme="@style/AppThemeActionBar"
3636
tools:targetApi="33">
3737

38-
<activity
39-
android:name=".ui.screens.startup.StartupActivity"
40-
android:noHistory="true"
41-
android:theme="@style/AppTheme" />
42-
4338
<activity
4439
android:name=".ui.screens.main.MainActivity"
4540
android:exported="true"

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.d4rk.androidtutorials.java.ui.screens.main;
22

3+
import android.Manifest;
34
import android.app.Activity;
45
import android.content.Intent;
6+
import android.os.Build;
57
import android.os.Bundle;
6-
import android.os.Handler;
7-
import android.os.Looper;
88
import android.util.Log;
99
import android.view.View;
1010

@@ -33,8 +33,8 @@
3333
import com.d4rk.androidtutorials.java.databinding.ActivityMainBinding;
3434
import com.d4rk.androidtutorials.java.notifications.managers.AppUpdateNotificationsManager;
3535
import com.d4rk.androidtutorials.java.ui.components.navigation.BottomSheetMenuFragment;
36-
import com.d4rk.androidtutorials.java.ui.screens.startup.StartupActivity;
3736
import com.d4rk.androidtutorials.java.ui.screens.startup.StartupViewModel;
37+
import com.d4rk.androidtutorials.java.ui.screens.startup.dialogs.ConsentDialogFragment;
3838
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
3939
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
4040
import com.google.android.gms.ads.AdRequest;
@@ -120,10 +120,6 @@ protected void onCreate(Bundle savedInstanceState) {
120120
setupActionBar();
121121
observeViewModel();
122122

123-
Handler handler = new Handler(Looper.getMainLooper());
124-
long snackbarInterval = 60L * 24 * 60 * 60 * 1000;
125-
handler.postDelayed(this::showSnackbar, snackbarInterval);
126-
127123
setupUpdateNotifications();
128124

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

138134
launcherShortcuts();
139135

136+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
137+
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1);
138+
}
139+
140140
this.appUpdateManager = mainViewModel.getAppUpdateManager();
141141

142142
registerInstallStateListener();
@@ -240,8 +240,11 @@ private void setupUpdateNotifications() {
240240
appUpdateNotificationsManager = new AppUpdateNotificationsManager(this);
241241
}
242242

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

247250
@Override
Lines changed: 4 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,26 @@
11
package com.d4rk.androidtutorials.java.ui.screens.startup;
22

3-
import android.Manifest;
43
import android.content.Intent;
54
import android.net.Uri;
6-
import android.os.Build;
75
import android.os.Bundle;
86

97
import androidx.appcompat.app.AppCompatActivity;
10-
import androidx.lifecycle.ViewModelProvider;
118

12-
import com.d4rk.androidtutorials.java.R;
139
import com.d4rk.androidtutorials.java.databinding.ActivityStartupBinding;
1410
import com.d4rk.androidtutorials.java.ui.screens.main.MainActivity;
15-
import com.d4rk.androidtutorials.java.ui.screens.startup.dialogs.ConsentDialogFragment;
16-
import com.google.android.ump.ConsentInformation;
17-
import com.google.android.ump.ConsentRequestParameters;
18-
import com.google.android.ump.UserMessagingPlatform;
19-
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
20-
21-
22-
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
2311

2412
import dagger.hilt.android.AndroidEntryPoint;
13+
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
2514

2615
@AndroidEntryPoint
2716
public class StartupActivity extends AppCompatActivity {
2817

29-
private StartupViewModel startupViewModel;
30-
private ConsentInformation consentInformation;
31-
3218
@Override
3319
protected void onCreate(Bundle savedInstanceState) {
3420
super.onCreate(savedInstanceState);
35-
com.d4rk.androidtutorials.java.databinding.ActivityStartupBinding binding = ActivityStartupBinding.inflate(getLayoutInflater());
21+
ActivityStartupBinding binding = ActivityStartupBinding.inflate(getLayoutInflater());
3622
setContentView(binding.getRoot());
3723

38-
ConsentUtils.applyStoredConsent(this);
39-
40-
startupViewModel = new ViewModelProvider(this).get(StartupViewModel.class);
41-
42-
consentInformation = UserMessagingPlatform.getConsentInformation(this);
43-
ConsentRequestParameters params = new ConsentRequestParameters.Builder()
44-
.setTagForUnderAgeOfConsent(false)
45-
.build();
46-
47-
startupViewModel.requestConsentInfoUpdate(
48-
this,
49-
params,
50-
() -> {
51-
if (consentInformation.isConsentFormAvailable()) {
52-
startupViewModel.loadConsentForm(
53-
this,
54-
formError -> ConsentUtils.updateFirebaseConsent(this,
55-
false, false, false, false)
56-
);
57-
} else if (consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.OBTAINED) {
58-
ConsentUtils.applyStoredConsent(this);
59-
}
60-
},
61-
formError -> {}
62-
);
63-
6424
new FastScrollerBuilder(binding.scrollView)
6525
.useMd2Style()
6626
.build();
@@ -71,23 +31,8 @@ protected void onCreate(Bundle savedInstanceState) {
7131
);
7232

7333
binding.floatingButtonAgree.setOnClickListener(v -> {
74-
ConsentDialogFragment dialog = new ConsentDialogFragment();
75-
dialog.setConsentListener((analytics, adStorage, adUserData, adPersonalization) -> {
76-
ConsentUtils.updateFirebaseConsent(this,
77-
analytics, adStorage, adUserData, adPersonalization);
78-
proceedToMainActivity();
79-
});
80-
dialog.show(getSupportFragmentManager(), "consent_dialog");
34+
startActivity(new Intent(this, MainActivity.class));
35+
finish();
8136
});
82-
83-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
84-
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1);
85-
}
8637
}
87-
88-
private void proceedToMainActivity() {
89-
startActivity(new Intent(this, MainActivity.class));
90-
finish();
91-
}
92-
9338
}

0 commit comments

Comments
 (0)