Skip to content

Commit 9c50de9

Browse files
chore: remove tools namespace from localized strings
1 parent 961a7d9 commit 9c50de9

File tree

1 file changed

+58
-15
lines changed

1 file changed

+58
-15
lines changed

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

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
import androidx.navigation.ui.NavigationUI;
3131
import androidx.preference.PreferenceManager;
3232

33+
import com.d4rk.androidtutorials.java.BuildConfig;
3334
import com.d4rk.androidtutorials.java.R;
3435
import com.d4rk.androidtutorials.java.databinding.ActivityMainBinding;
36+
import com.d4rk.androidtutorials.java.notifications.managers.AppUpdateNotificationsManager;
37+
import com.d4rk.androidtutorials.java.notifications.managers.AppUsageNotificationsManager;
3538
import com.d4rk.androidtutorials.java.ui.components.navigation.BottomSheetMenuFragment;
3639
import com.d4rk.androidtutorials.java.ui.screens.startup.StartupActivity;
3740
import com.d4rk.androidtutorials.java.ui.screens.startup.StartupViewModel;
@@ -48,6 +51,7 @@
4851
import com.google.android.play.core.install.InstallStateUpdatedListener;
4952
import com.google.android.play.core.install.model.AppUpdateType;
5053
import com.google.android.play.core.install.model.InstallStatus;
54+
import com.google.android.play.core.install.model.UpdateAvailability;
5155
import com.google.android.ump.ConsentInformation;
5256
import com.google.android.ump.ConsentRequestParameters;
5357
import com.google.android.ump.UserMessagingPlatform;
@@ -92,6 +96,7 @@ public void onResume(@NonNull LifecycleOwner owner) {
9296
private NavController navController;
9397
private int currentNavIndex;
9498
private AppUpdateManager appUpdateManager;
99+
private AppUpdateNotificationsManager appUpdateNotificationsManager;
95100
private InstallStateUpdatedListener installStateUpdatedListener;
96101
private long backPressedTime;
97102

@@ -134,6 +139,7 @@ protected void onCreate(Bundle savedInstanceState) {
134139
}
135140

136141
this.appUpdateManager = mainViewModel.getAppUpdateManager();
142+
setupUpdateNotifications();
137143

138144
registerInstallStateListener();
139145
getLifecycle().addObserver(lifecycleObserver);
@@ -238,17 +244,19 @@ private void observeViewModel() {
238244
.build();
239245

240246
if (useRail) {
241-
NavigationUI.setupWithNavController(mBinding.navRail, navController);
242-
mBinding.navRail.setOnItemSelectedListener(item -> {
243-
if (item.getItemId() == navController.getCurrentDestination().getId()) {
247+
if (mBinding.navRail != null) {
248+
NavigationUI.setupWithNavController(mBinding.navRail, navController);
249+
mBinding.navRail.setOnItemSelectedListener(item -> {
250+
if (item.getItemId() == navController.getCurrentDestination().getId()) {
251+
return true;
252+
}
253+
int newIndex = navOrder.get(item.getItemId());
254+
NavOptions options = newIndex > currentNavIndex ? forwardOptions : backwardOptions;
255+
navController.navigate(item.getItemId(), null, options);
256+
currentNavIndex = newIndex;
244257
return true;
245-
}
246-
int newIndex = navOrder.get(item.getItemId());
247-
NavOptions options = newIndex > currentNavIndex ? forwardOptions : backwardOptions;
248-
navController.navigate(item.getItemId(), null, options);
249-
currentNavIndex = newIndex;
250-
return true;
251-
});
258+
});
259+
}
252260
} else {
253261
NavigationUI.setupWithNavController(navBarView, navController);
254262
navBarView.setOnItemSelectedListener(item -> {
@@ -299,12 +307,47 @@ public boolean onOptionsItemSelected(android.view.MenuItem item) {
299307
return super.onOptionsItemSelected(item);
300308
}
301309

310+
@Override
311+
protected void onResume() {
312+
super.onResume();
313+
AppUsageNotificationsManager appUsageNotificationsManager = new AppUsageNotificationsManager(this);
314+
appUsageNotificationsManager.scheduleAppUsageCheck();
315+
appUpdateNotificationsManager.checkAndSendUpdateNotification();
316+
checkForFlexibleOrImmediateUpdate();
317+
}
318+
319+
private void checkForFlexibleOrImmediateUpdate() {
320+
appUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> {
321+
boolean updateAvailable = appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE;
322+
if (updateAvailable) {
323+
startImmediateUpdate(appUpdateInfo);
324+
}
325+
})
326+
.addOnFailureListener(e -> {
327+
if (!BuildConfig.DEBUG) {
328+
Snackbar.make(
329+
findViewById(android.R.id.content),
330+
getString(R.string.snack_general_error),
331+
Snackbar.LENGTH_LONG
332+
).show();
333+
}
334+
});
335+
}
336+
302337
private void startImmediateUpdate(AppUpdateInfo appUpdateInfo) {
303-
appUpdateManager.startUpdateFlowForResult(
304-
appUpdateInfo,
305-
updateActivityResultLauncher,
306-
AppUpdateOptions.newBuilder(AppUpdateType.IMMEDIATE).build()
307-
);
338+
try {
339+
appUpdateManager.startUpdateFlowForResult(
340+
appUpdateInfo,
341+
updateActivityResultLauncher,
342+
AppUpdateOptions.newBuilder(AppUpdateType.IMMEDIATE).build()
343+
);
344+
} catch (Exception e) {
345+
Log.e("MainActivity", "Error starting in-app update", e);
346+
}
347+
}
348+
349+
private void setupUpdateNotifications() {
350+
appUpdateNotificationsManager = new AppUpdateNotificationsManager(this);
308351
}
309352

310353
private void registerInstallStateListener() {

0 commit comments

Comments
 (0)