Intro WIP
This commit is contained in:
parent
d42bc0075c
commit
1a66c9e135
3 changed files with 50 additions and 25 deletions
|
|
@ -93,6 +93,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
private PagerAdapter pagerAdapter;
|
||||
private MaterialCab cab;
|
||||
|
||||
private boolean introActivityHandlingPermissions;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
@ -116,15 +118,20 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
checkChangelog();
|
||||
|
||||
PreferenceUtil.getInstance(this).incrementAppOpenCount();
|
||||
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (PreferenceUtil.getInstance(MainActivity.this).getAppOpenCount() == 1) {
|
||||
if (PreferenceUtil.getInstance(MainActivity.this).getAppOpenCount() == 1) {
|
||||
introActivityHandlingPermissions = true;
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startActivity(new Intent(MainActivity.this, IntroActivity.class));
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void requestPermissions() {
|
||||
if (!introActivityHandlingPermissions) super.requestPermissions();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
package com.kabouzeid.gramophone.ui.activities.base;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
|
|
@ -20,17 +19,20 @@ import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
|||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public abstract class AbsBaseActivity extends AbsThemeActivity implements KabViewsDisableAble {
|
||||
public static final int REQUEST_EXTERNAL_STORAGE_PERMISSION = 0;
|
||||
public static final int PERMISSION_REQUEST = 100;
|
||||
|
||||
private boolean areViewsEnabled;
|
||||
|
||||
private boolean hasExternalStoragePermission;
|
||||
private boolean createdWithPermissionsGranted;
|
||||
private String[] permissions;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
hasExternalStoragePermission = hasExternalStoragePermission();
|
||||
|
||||
permissions = getPermissionsToRequest();
|
||||
createdWithPermissionsGranted = hasPermissions();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -38,9 +40,9 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
|
|||
super.onResume();
|
||||
enableViews();
|
||||
|
||||
if (!hasExternalStoragePermission()) {
|
||||
if (!hasPermissions()) {
|
||||
requestPermissions();
|
||||
} else if (didPermissionsChanged()) {
|
||||
} else if (!createdWithPermissionsGranted) {
|
||||
// the handler is necessary to avoid "java.lang.RuntimeException: Performing pause of activity that is not resumed"
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
|
|
@ -89,39 +91,47 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
|
|||
return areViewsEnabled;
|
||||
}
|
||||
|
||||
private boolean didPermissionsChanged() {
|
||||
return hasExternalStoragePermission != hasExternalStoragePermission();
|
||||
@Nullable
|
||||
protected String[] getPermissionsToRequest() {
|
||||
return null;
|
||||
}
|
||||
|
||||
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);
|
||||
protected void requestPermissions() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && permissions != null) {
|
||||
requestPermissions(permissions, PERMISSION_REQUEST);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private boolean hasExternalStoragePermission() {
|
||||
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
|
||||
protected boolean hasPermissions() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && permissions != null) {
|
||||
for (String permission : permissions) {
|
||||
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
if (requestCode == REQUEST_EXTERNAL_STORAGE_PERMISSION) {
|
||||
if (requestCode == PERMISSION_REQUEST) {
|
||||
for (int grantResult : grantResults) {
|
||||
if (grantResult == PackageManager.PERMISSION_GRANTED) {
|
||||
recreate();
|
||||
return;
|
||||
}
|
||||
}
|
||||
//TODO snack nachricht veralgemeinern
|
||||
Snackbar.make(getWindow().getDecorView(), R.string.permission_to_access_external_storage_denied, Snackbar.LENGTH_INDEFINITE)
|
||||
.setAction(getString(R.string.action_settings), onGoToPermissionSettingsClickListener)
|
||||
.setAction(getString(R.string.action_settings), goToPermissionSettingsOnClick)
|
||||
.setActionTextColor(ThemeSingleton.get().positiveColor)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
private View.OnClickListener onGoToPermissionSettingsClickListener = new View.OnClickListener() {
|
||||
private View.OnClickListener goToPermissionSettingsOnClick = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//TODO
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.kabouzeid.gramophone.ui.activities.base;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
|
|
@ -9,6 +10,7 @@ import android.content.ServiceConnection;
|
|||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
|
||||
|
|
@ -175,4 +177,10 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected String[] getPermissionsToRequest() {
|
||||
return new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue