Made snackbars work

This commit is contained in:
Karim Abou Zeid 2015-12-30 18:11:26 +01:00
commit ff2e6b1444
2 changed files with 35 additions and 22 deletions

View file

@ -1,13 +1,18 @@
package com.kabouzeid.gramophone.ui.activities.base; package com.kabouzeid.gramophone.ui.activities.base;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.media.AudioManager; import android.media.AudioManager;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.provider.Settings;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
@ -28,8 +33,6 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
private String[] permissions; private String[] permissions;
private String permissionDeniedMessage; private String permissionDeniedMessage;
private Snackbar goToPermissionsSnackbar;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -127,9 +130,6 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
} else { } else {
permissionDeniedMessage = message; permissionDeniedMessage = message;
} }
if (goToPermissionsSnackbar != null) {
goToPermissionsSnackbar.setText(permissionDeniedMessage);
}
} }
protected void requestPermissions() { protected void requestPermissions() {
@ -155,27 +155,39 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
if (requestCode == PERMISSION_REQUEST) { if (requestCode == PERMISSION_REQUEST) {
for (int grantResult : grantResults) { for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) { if (grantResult != PackageManager.PERMISSION_GRANTED) {
if (goToPermissionsSnackbar == null) { if (ActivityCompat.shouldShowRequestPermissionRationale(AbsBaseActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
goToPermissionsSnackbar = Snackbar.make(getWindow().getDecorView(), permissionDeniedMessage, Snackbar.LENGTH_INDEFINITE) //User has deny from permission dialog
.setAction(getString(R.string.action_settings), goToPermissionSettingsOnClick) Snackbar.make(getWindow().getDecorView(), permissionDeniedMessage,
.setActionTextColor(ThemeSingleton.get().positiveColor); Snackbar.LENGTH_INDEFINITE)
goToPermissionsSnackbar.show(); .setAction(R.string.action_grant, new View.OnClickListener() {
@Override
public void onClick(View view) {
requestPermissions();
}
})
.setActionTextColor(ThemeSingleton.get().positiveColor)
.show();
} else {
// User has deny permission and checked never show permission dialog so you can redirect to Application settings page
Snackbar.make(getWindow().getDecorView(), permissionDeniedMessage,
Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.action_settings, new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", AbsBaseActivity.this.getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
})
.setActionTextColor(ThemeSingleton.get().positiveColor)
.show();
} }
return; return;
} }
} }
if (goToPermissionsSnackbar != null) {
goToPermissionsSnackbar.dismiss();
goToPermissionsSnackbar = null;
}
onPermissionsChanged(); onPermissionsChanged();
} }
} }
private View.OnClickListener goToPermissionSettingsOnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO
}
};
} }

View file

@ -7,7 +7,8 @@
<string name="x_has_been_set_as_ringtone">Set %1$s as your ringtone.</string> <string name="x_has_been_set_as_ringtone">Set %1$s as your ringtone.</string>
<string name="action_set_as_ringtone">Set as ringtone</string> <string name="action_set_as_ringtone">Set as ringtone</string>
<string name="action_share">Share</string> <string name="action_share">Share</string>
<string name="action_settings">"Settings"</string> <string name="action_settings">Settings</string>
<string name="action_grant">Grant</string>
<string name="action_about">About</string> <string name="action_about">About</string>
<string name="action_show_intro">Show intro</string> <string name="action_show_intro">Show intro</string>
<string name="action_clear_playlist">Clear playlist</string> <string name="action_clear_playlist">Clear playlist</string>