[Android] Improve Onboarding launch
Geoffrey Métais
git at videolan.org
Wed Mar 13 11:12:05 CET 2019
vlc-android | branch: 3.1.x | Geoffrey Métais <geoffrey at videolan.org> | Tue Mar 12 10:11:26 2019 +0100| [bf6265c2c3b6d6cb5c95200294179c05c7465945] | committer: Geoffrey Métais
Improve Onboarding launch
- Launch onboarding from StartActivity instead of MainActivity
- Launch it until it's been completed
> https://code.videolan.org/videolan/vlc-android/commit/bf6265c2c3b6d6cb5c95200294179c05c7465945
---
.../src/org/videolan/vlc/StartActivity.java | 19 ++++++++++--------
.../src/org/videolan/vlc/gui/MainActivity.java | 5 +----
.../vlc/gui/onboarding/OnboardingActivity.kt | 23 +++++++++++-----------
3 files changed, 23 insertions(+), 24 deletions(-)
diff --git a/vlc-android/src/org/videolan/vlc/StartActivity.java b/vlc-android/src/org/videolan/vlc/StartActivity.java
index 7f65ce656..d476a4e04 100644
--- a/vlc-android/src/org/videolan/vlc/StartActivity.java
+++ b/vlc-android/src/org/videolan/vlc/StartActivity.java
@@ -85,7 +85,7 @@ public class StartActivity extends FragmentActivity {
/* Check if it's the first run */
final boolean firstRun = savedVersionNumber == -1;
final boolean upgrade = firstRun || savedVersionNumber != currentVersionNumber;
- if (upgrade) settings.edit().putInt(Constants.PREF_FIRST_RUN, currentVersionNumber).apply();
+ if (upgrade && !firstRun) settings.edit().putInt(Constants.PREF_FIRST_RUN, currentVersionNumber).apply();
final boolean tv = showTvUi();
// Route search query
if (Intent.ACTION_SEARCH.equals(action) || "com.google.android.gms.actions.SEARCH_ACTION".equals(action)) {
@@ -115,22 +115,25 @@ public class StartActivity extends FragmentActivity {
}
private void startApplication(final boolean tv, final boolean firstRun, final boolean upgrade, final int target) {
+ final boolean onboarding = firstRun && !tv && !Settings.INSTANCE.getInstance(StartActivity.this).getBoolean(OnboardingActivityKt.ONBOARDING_DONE_KEY, false);
// Start Medialibrary from background to workaround Dispatchers.Main causing ANR
// cf https://github.com/Kotlin/kotlinx.coroutines/issues/878
- if (!firstRun || tv || Settings.INSTANCE.getInstance(StartActivity.this).getBoolean(OnboardingActivityKt.ONBOARDING_DONE_KEY, false)) {
+ if (!onboarding) {
new Thread(new Runnable() {
@Override
public void run() {
MediaParsingServiceKt.startMedialibrary(StartActivity.this, firstRun, upgrade, true);
}
}).start();
+ final Intent intent = new Intent(StartActivity.this, tv ? MainTvActivity.class : MainActivity.class)
+ .putExtra(Constants.EXTRA_FIRST_RUN, firstRun)
+ .putExtra(Constants.EXTRA_UPGRADE, upgrade);
+ if (tv && getIntent().hasExtra(Constants.EXTRA_PATH)) intent.putExtra(Constants.EXTRA_PATH, getIntent().getStringExtra(Constants.EXTRA_PATH));
+ if (target != 0) intent.putExtra(Constants.EXTRA_TARGET, target);
+ startActivity(intent);
+ } else {
+ OnboardingActivityKt.startOnboarding(StartActivity.this);
}
- final Intent intent = new Intent(StartActivity.this, tv ? MainTvActivity.class : MainActivity.class)
- .putExtra(Constants.EXTRA_FIRST_RUN, firstRun)
- .putExtra(Constants.EXTRA_UPGRADE, upgrade);
- if (tv && getIntent().hasExtra(Constants.EXTRA_PATH)) intent.putExtra(Constants.EXTRA_PATH, getIntent().getStringExtra(Constants.EXTRA_PATH));
- if (target != 0) intent.putExtra(Constants.EXTRA_TARGET, target);
- startActivity(intent);
}
private void startPlaybackFromApp(Intent intent) {
diff --git a/vlc-android/src/org/videolan/vlc/gui/MainActivity.java b/vlc-android/src/org/videolan/vlc/gui/MainActivity.java
index a9c44709f..e523a1c79 100644
--- a/vlc-android/src/org/videolan/vlc/gui/MainActivity.java
+++ b/vlc-android/src/org/videolan/vlc/gui/MainActivity.java
@@ -113,10 +113,7 @@ public class MainActivity extends ContentActivity implements ExtensionManagerSer
}
}, 500);
}
- if (getIntent().getBooleanExtra(Constants.EXTRA_FIRST_RUN, false)
- && !mSettings.getBoolean(OnboardingActivityKt.ONBOARDING_DONE_KEY, false)) {
- OnboardingActivityKt.startOnboarding(MainActivity.this);
- } else Permissions.checkReadStoragePermission(MainActivity.this, false);
+ Permissions.checkReadStoragePermission(MainActivity.this, false);
}
/* Set up the action bar */
diff --git a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt
index fe254f74c..c7b0e52ee 100644
--- a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt
@@ -13,8 +13,10 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.viewpager.widget.ViewPager
import kotlinx.coroutines.*
+import org.videolan.vlc.BuildConfig
import org.videolan.vlc.MediaParsingService
import org.videolan.vlc.R
+import org.videolan.vlc.gui.MainActivity
import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate
import org.videolan.vlc.gui.preferences.PreferencesActivity
import org.videolan.vlc.gui.view.NonSwipeableViewPager
@@ -105,7 +107,7 @@ class OnboardingActivity : AppCompatActivity(), ViewPager.OnPageChangeListener,
}
}
- doneButton.setOnClickListener { finish() }
+ doneButton.setOnClickListener { completeOnBoarding() }
val count = viewModel.adapterCount
@@ -126,18 +128,15 @@ class OnboardingActivity : AppCompatActivity(), ViewPager.OnPageChangeListener,
.putBoolean(ONBOARDING_DONE_KEY, true)
.putInt(KEY_MEDIALIBRARY_SCAN, if (viewModel.scanStorages) ML_SCAN_ON else ML_SCAN_OFF)
.putInt("fragment_id", if (viewModel.scanStorages) R.id.nav_video else R.id.nav_directories)
+ .putInt(PREF_FIRST_RUN, BuildConfig.VERSION_CODE)
.apply()
- launch {
- if (!viewModel.scanStorages) {
- MediaParsingService.preselectedStorages.clear()
- }
- startMedialibrary(firstRun = true, upgrade = true, parse = viewModel.scanStorages)
- }
- }
-
- override fun finish() {
- completeOnBoarding()
- super.finish()
+ if (!viewModel.scanStorages) MediaParsingService.preselectedStorages.clear()
+ startMedialibrary(firstRun = true, upgrade = true, parse = viewModel.scanStorages)
+ val intent = Intent(this at OnboardingActivity, MainActivity::class.java)
+ .putExtra(EXTRA_FIRST_RUN, true)
+ .putExtra(EXTRA_UPGRADE, true)
+ startActivity(intent)
+ finish()
}
override fun onBackPressed() {
More information about the Android
mailing list