Added tutorial. WIP
This commit is contained in:
parent
0ca3ec2ad8
commit
8afcce22b1
13 changed files with 104 additions and 24 deletions
|
|
@ -0,0 +1,37 @@
|
|||
package com.kabouzeid.gramophone.ui.activities;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
import com.github.paolorotolo.appintro.AppIntro;
|
||||
import com.github.paolorotolo.appintro.AppIntroFragment;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.util.ColorUtil;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class IntroActivity extends AppIntro {
|
||||
@Override
|
||||
public void init(Bundle savedInstanceState) {
|
||||
int color = ContextCompat.getColor(this, R.color.blue_grey_700);
|
||||
setStatusBarColor(ColorUtil.shiftColorDown(color));
|
||||
|
||||
addSlide(AppIntroFragment.newInstance(getString(R.string.app_name), "Welcome to Phonograph, a beautiful and lightweight music player for Android. ", R.drawable.icon_web, color));
|
||||
if (!hasExternalStoragePermission()) {
|
||||
addSlide(AppIntroFragment.newInstance("Storage", "The storage permission is required for Phonograph to read your music library.", R.drawable.ic_folder_web, color));
|
||||
askForPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
|
||||
}
|
||||
addSlide(AppIntroFragment.newInstance(getString(R.string.label_current_playing_queue), "You can swipe the card in the now playing screen up to reveal to full playing queue.", R.drawable.intro_swipe_up, color));
|
||||
}
|
||||
|
||||
private boolean hasExternalStoragePermission() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
return checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -114,6 +114,17 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
setStatusBarThemeColor();
|
||||
|
||||
checkChangelog();
|
||||
|
||||
PreferenceUtil.getInstance(this).incrementAppOpenCount();
|
||||
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (PreferenceUtil.getInstance(MainActivity.this).getAppOpenCount() == 1) {
|
||||
startActivity(new Intent(MainActivity.this, IntroActivity.class));
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -8,9 +8,11 @@ import android.os.Build;
|
|||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.view.KeyEvent;
|
||||
import android.widget.Toast;
|
||||
import android.view.View;
|
||||
|
||||
import com.afollestad.materialdialogs.internal.ThemeSingleton;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
|
||||
|
|
@ -28,7 +30,7 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
checkExternalStoragePermissions();
|
||||
hasExternalStoragePermission = hasExternalStoragePermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -36,13 +38,17 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
|
|||
super.onResume();
|
||||
enableViews();
|
||||
|
||||
// the handler is necessary to avoid "java.lang.RuntimeException: Performing pause of activity that is not resumed"
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
recreateIfPermissionsChanged();
|
||||
}
|
||||
}, 200);
|
||||
if (!hasExternalStoragePermission()) {
|
||||
requestPermissions();
|
||||
} else if (didPermissionsChanged()) {
|
||||
// the handler is necessary to avoid "java.lang.RuntimeException: Performing pause of activity that is not resumed"
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
recreate();
|
||||
}
|
||||
}, 200);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -83,22 +89,13 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
|
|||
return areViewsEnabled;
|
||||
}
|
||||
|
||||
protected void recreateIfPermissionsChanged() {
|
||||
if (didPermissionsChanged()) {
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean didPermissionsChanged() {
|
||||
return hasExternalStoragePermission != hasExternalStoragePermission();
|
||||
}
|
||||
|
||||
private void checkExternalStoragePermissions() {
|
||||
hasExternalStoragePermission = hasExternalStoragePermission();
|
||||
if (!hasExternalStoragePermission) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE_PERMISSION);
|
||||
}
|
||||
private void requestPermissions() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE_PERMISSION);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -117,7 +114,17 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
|
|||
return;
|
||||
}
|
||||
}
|
||||
Toast.makeText(this, getResources().getString(R.string.permission_to_access_external_storage_denied), Toast.LENGTH_SHORT).show();
|
||||
Snackbar.make(getWindow().getDecorView(), R.string.permission_to_access_external_storage_denied, Snackbar.LENGTH_INDEFINITE)
|
||||
.setAction(getString(R.string.action_settings), onGoToPermissionSettingsClickListener)
|
||||
.setActionTextColor(ThemeSingleton.get().positiveColor)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
private View.OnClickListener onGoToPermissionSettingsClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//TODO
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue