package com.mercandalli.android.apps.files.splash; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.mercandalli.android.apps.files.R; import com.mercandalli.android.apps.files.file.local.provider.FileLocalProviderManager; import com.mercandalli.android.apps.files.intent.IntentManager; import com.mercandalli.android.apps.files.main.MainActivity; import com.mercandalli.android.library.base.permission.Permission; /** * The first {@link Activity} launched. */ public class SplashActivity extends AppCompatActivity implements Permission.OnPermissionResult { @NonNull private static final String[] PERMISSIONS = new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE//, //Manifest.permission.ACCESS_COARSE_LOCATION, //Manifest.permission.ACCESS_FINE_LOCATION }; private static final String EXTRA_START_BY_INTENT = "SplashActivity.Extra.EXTRA_START_BY_INTENT"; private static final String SHARED_PREFERENCES_INIT = "SplashActivity.Permission"; private static final String KEY_IS_FIRST_LAUNCH = "SplashActivity.Key.KEY_IS_FIRST_LAUNCH"; public static void start(@NonNull final Context context) { final Intent intent = new Intent(context, SplashActivity.class); intent.putExtra(EXTRA_START_BY_INTENT, true); context.startActivity(intent); if (context instanceof Activity) { ((Activity) context).overridePendingTransition(R.anim.left_in, R.anim.left_out); } } @Nullable private Permission mPermission; private boolean mIsFirstLaunch; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); boolean start = false; final Bundle extras = getIntent().getExtras(); if (mIsFirstLaunch = isFirstLaunch()) { start = true; } else if (extras != null && extras.containsKey(EXTRA_START_BY_INTENT) && extras.getBoolean(EXTRA_START_BY_INTENT)) { start = true; } if (extras != null && extras.containsKey("folder-path")) { IntentManager.getInstance().setInitialFolderPath(extras.getString("folder-path")); } mPermission = new Permission(PERMISSIONS); if (start) { mPermission.askPermissions(this, this); return; } if (!mPermission.checkPermission(this)) { mPermission.askPermissions(this, this); return; } launchMainActivity(); } @Override public void onRequestPermissionsResult( int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (mPermission != null) { mPermission.onRequestPermissionsResult(requestCode, permissions, grantResults); } else { Toast.makeText(this, R.string.activity_splash_no_permission, Toast.LENGTH_LONG).show(); finish(); } } @Override public void onPermissionResult(boolean allSucceed) { if (allSucceed) { end(); } else { Toast.makeText(this, R.string.activity_splash_no_permission, Toast.LENGTH_LONG).show(); finish(); } } private boolean isFirstLaunch() { final SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFERENCES_INIT, MODE_PRIVATE); return sharedPreferences.getBoolean(SplashActivity.KEY_IS_FIRST_LAUNCH, true); } private void end() { launchMainActivity(); if (mIsFirstLaunch) { final SharedPreferences.Editor editor = getSharedPreferences(SHARED_PREFERENCES_INIT, MODE_PRIVATE).edit(); editor.putBoolean(KEY_IS_FIRST_LAUNCH, false); editor.apply(); } } private void launchMainActivity() { FileLocalProviderManager.getInstance(this).load(); MainActivity.start(this); finish(); } }