Fixed AppIntro, renamed some strings.

This commit is contained in:
Karim Abou Zeid 2015-12-30 16:13:21 +01:00
commit 82642ce94a
24 changed files with 104 additions and 43 deletions

View file

@ -35,4 +35,9 @@ public class IntroActivity extends AppIntro {
}
return true;
}
@Override
public void onBackPressed() {
previous();
}
}

View file

@ -74,6 +74,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
implements KabViewsDisableAble, CabHolder, DrawerLayout.DrawerListener {
public static final String TAG = MainActivity.class.getSimpleName();
public static final int APP_INTRO_REQUEST = 100;
@Bind(R.id.toolbar)
Toolbar toolbar;
@ -118,14 +119,26 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
checkChangelog();
PreferenceUtil.getInstance(this).incrementAppOpenCount();
if (PreferenceUtil.getInstance(MainActivity.this).getAppOpenCount() == 1) {
if (PreferenceUtil.getInstance(this).getAppOpenCount() == 1) {
// let the app intro handle getting the permissions first
introActivityHandlingPermissions = true;
new Thread(new Runnable() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(MainActivity.this, IntroActivity.class));
startActivityForResult(new Intent(MainActivity.this, IntroActivity.class), APP_INTRO_REQUEST);
}
}).start();
}, 200);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == APP_INTRO_REQUEST) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// app intro is done, recreate to refresh permissions
onPermissionsChanged();
}
}
}
@ -343,7 +356,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
menu.add(0, R.id.action_new_playlist, 0, R.string.new_playlist_title);
}
Fragment currentFragment = getCurrentFragment();
if (currentFragment instanceof AbsMainActivityRecyclerViewCustomGridSizeFragment) {
if (currentFragment instanceof AbsMainActivityRecyclerViewCustomGridSizeFragment && currentFragment.isAdded()) {
AbsMainActivityRecyclerViewCustomGridSizeFragment absMainActivityRecyclerViewCustomGridSizeFragment = (AbsMainActivityRecyclerViewCustomGridSizeFragment) currentFragment;
MenuItem gridSizeItem = menu.findItem(R.id.action_grid_size);

View file

@ -25,6 +25,9 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
private boolean createdWithPermissionsGranted;
private String[] permissions;
private String permissionDeniedMessage;
private Snackbar goToPermissionsSnackbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -33,6 +36,16 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
permissions = getPermissionsToRequest();
createdWithPermissionsGranted = hasPermissions();
setPermissionDeniedMessage(null);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
if (!hasPermissions()) {
requestPermissions();
}
}
@Override
@ -40,19 +53,27 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
super.onResume();
enableViews();
if (!hasPermissions()) {
requestPermissions();
} 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
public void run() {
recreate();
}
}, 200);
if (hasPermissions() != createdWithPermissionsGranted) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// the handler is necessary to avoid "java.lang.RuntimeException: Performing pause of activity that is not resumed"
onPermissionsChanged();
}
}
}
protected void onPermissionsChanged() {
postRecreate();
}
protected void postRecreate() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recreate();
}
}, 200);
}
@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_MENU && event.getAction() == KeyEvent.ACTION_UP) {
@ -96,6 +117,17 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
return null;
}
protected void setPermissionDeniedMessage(String message) {
if (message == null) {
permissionDeniedMessage = getString(R.string.permissions_denied);
} else {
permissionDeniedMessage = message;
}
if (goToPermissionsSnackbar != null) {
goToPermissionsSnackbar.setText(permissionDeniedMessage);
}
}
protected void requestPermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && permissions != null) {
requestPermissions(permissions, PERMISSION_REQUEST);
@ -118,16 +150,21 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST) {
for (int grantResult : grantResults) {
if (grantResult == PackageManager.PERMISSION_GRANTED) {
recreate();
if (grantResult != PackageManager.PERMISSION_GRANTED) {
if (goToPermissionsSnackbar == null) {
goToPermissionsSnackbar = Snackbar.make(getWindow().getDecorView(), permissionDeniedMessage, Snackbar.LENGTH_INDEFINITE)
.setAction(getString(R.string.action_settings), goToPermissionSettingsOnClick)
.setActionTextColor(ThemeSingleton.get().positiveColor);
goToPermissionsSnackbar.show();
}
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), goToPermissionSettingsOnClick)
.setActionTextColor(ThemeSingleton.get().positiveColor)
.show();
if (goToPermissionsSnackbar != null) {
goToPermissionsSnackbar.dismiss();
goToPermissionsSnackbar = null;
}
onPermissionsChanged();
}
}

View file

@ -12,6 +12,7 @@ import android.os.IBinder;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
import com.kabouzeid.gramophone.service.MusicService;
@ -36,6 +37,8 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
serviceToken = MusicPlayerRemote.bindToService(this, this);
setPermissionDeniedMessage(getString(R.string.permission_external_storage_denied));
}
@Override

View file

@ -171,8 +171,10 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
playPauseFab.post(new Runnable() {
@Override
public void run() {
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
if (playPauseFab != null) {
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
}
}
});
}