diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java
index 8cc8b3cd..2536a802 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java
@@ -1,13 +1,18 @@
package com.kabouzeid.gramophone.ui.activities.base;
+import android.Manifest;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.media.AudioManager;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
+import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
+import android.support.v4.app.ActivityCompat;
import android.view.KeyEvent;
import android.view.View;
@@ -28,8 +33,6 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
private String[] permissions;
private String permissionDeniedMessage;
- private Snackbar goToPermissionsSnackbar;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -127,9 +130,6 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
} else {
permissionDeniedMessage = message;
}
- if (goToPermissionsSnackbar != null) {
- goToPermissionsSnackbar.setText(permissionDeniedMessage);
- }
}
protected void requestPermissions() {
@@ -155,27 +155,39 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
if (requestCode == PERMISSION_REQUEST) {
for (int grantResult : grantResults) {
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();
+ if (ActivityCompat.shouldShowRequestPermissionRationale(AbsBaseActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ //User has deny from permission dialog
+ Snackbar.make(getWindow().getDecorView(), permissionDeniedMessage,
+ Snackbar.LENGTH_INDEFINITE)
+ .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;
}
}
- if (goToPermissionsSnackbar != null) {
- goToPermissionsSnackbar.dismiss();
- goToPermissionsSnackbar = null;
- }
onPermissionsChanged();
}
}
-
- private View.OnClickListener goToPermissionSettingsOnClick = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //TODO
- }
- };
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e6443c6d..638188b9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,7 +7,8 @@
Set %1$s as your ringtone.
Set as ringtone
Share
- "Settings"
+ Settings
+ Grant
About
Show intro
Clear playlist