simplify base activity
This commit is contained in:
parent
cd3ad6b577
commit
6540f58560
3 changed files with 32 additions and 46 deletions
|
|
@ -1,46 +1,38 @@
|
||||||
package com.dkanada.gramophone.activities.base;
|
package com.dkanada.gramophone.activities.base;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
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.provider.Settings;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.app.ActivityCompat;
|
import androidx.core.app.ActivityCompat;
|
||||||
|
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||||
|
import com.dkanada.gramophone.util.NavigationUtil;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
public abstract class AbsBaseActivity extends AbsThemeActivity {
|
public abstract class AbsBaseActivity extends AbsThemeActivity {
|
||||||
public static final int PERMISSION_REQUEST = 100;
|
private static final int PERMISSION_REQUEST = 100;
|
||||||
|
|
||||||
private boolean hadPermissions;
|
private boolean hadPermissions;
|
||||||
private String[] permissions;
|
private String[] permissions;
|
||||||
private String permissionDeniedMessage;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
|
||||||
|
|
||||||
permissions = getPermissionsToRequest();
|
permissions = getPermissionsToRequest();
|
||||||
hadPermissions = hasPermissions();
|
hadPermissions = hasPermissions();
|
||||||
|
|
||||||
setPermissionDeniedMessage(null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
|
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onPostCreate(savedInstanceState);
|
super.onPostCreate(savedInstanceState);
|
||||||
|
|
||||||
if (!hasPermissions()) {
|
if (!hasPermissions()) {
|
||||||
requestPermissions();
|
requestPermissions();
|
||||||
}
|
}
|
||||||
|
|
@ -49,12 +41,8 @@ public abstract class AbsBaseActivity extends AbsThemeActivity {
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
final boolean hasPermissions = hasPermissions();
|
if (hasPermissions() != hadPermissions) {
|
||||||
if (hasPermissions != hadPermissions) {
|
super.recreate();
|
||||||
hadPermissions = hasPermissions;
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
super.recreate();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,12 +54,8 @@ public abstract class AbsBaseActivity extends AbsThemeActivity {
|
||||||
return getWindow().getDecorView();
|
return getWindow().getDecorView();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setPermissionDeniedMessage(String message) {
|
protected String getPermissionDeniedMessage() {
|
||||||
permissionDeniedMessage = message;
|
return getString(R.string.permissions_denied);
|
||||||
}
|
|
||||||
|
|
||||||
private String getPermissionDeniedMessage() {
|
|
||||||
return permissionDeniedMessage == null ? getString(R.string.permissions_denied) : permissionDeniedMessage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void requestPermissions() {
|
protected void requestPermissions() {
|
||||||
|
|
@ -99,31 +83,21 @@ public abstract class AbsBaseActivity extends AbsThemeActivity {
|
||||||
for (int grantResult : grantResults) {
|
for (int grantResult : grantResults) {
|
||||||
if (grantResult != PackageManager.PERMISSION_GRANTED) {
|
if (grantResult != PackageManager.PERMISSION_GRANTED) {
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(AbsBaseActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
if (ActivityCompat.shouldShowRequestPermissionRationale(AbsBaseActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||||
// user has deny from permission dialog
|
Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(), Snackbar.LENGTH_SHORT)
|
||||||
Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(),
|
.setAction(R.string.action_grant, view -> requestPermissions())
|
||||||
Snackbar.LENGTH_INDEFINITE)
|
.setActionTextColor(ThemeStore.accentColor(this))
|
||||||
.setAction(R.string.action_grant, view -> requestPermissions())
|
.show();
|
||||||
.setActionTextColor(ThemeStore.accentColor(this))
|
|
||||||
.show();
|
|
||||||
} else {
|
} else {
|
||||||
// user has deny permission and checked never show permission dialog so you can redirect to application settings page
|
Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(), Snackbar.LENGTH_SHORT)
|
||||||
Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(),
|
.setAction(R.string.action_settings, view -> NavigationUtil.openSettings(this))
|
||||||
Snackbar.LENGTH_INDEFINITE)
|
.setActionTextColor(ThemeStore.accentColor(this))
|
||||||
.setAction(R.string.action_settings, view -> {
|
.show();
|
||||||
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(ThemeStore.accentColor(this))
|
|
||||||
.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hadPermissions = true;
|
|
||||||
super.recreate();
|
super.recreate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||||
|
|
@ -44,8 +43,6 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
|
||||||
AbsMusicServiceActivity.this.onServiceDisconnected();
|
AbsMusicServiceActivity.this.onServiceDisconnected();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
setPermissionDeniedMessage(getString(R.string.permission_external_storage_denied));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -187,6 +184,11 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getPermissionDeniedMessage() {
|
||||||
|
return getString(R.string.permission_external_storage_denied);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String[] getPermissionsToRequest() {
|
protected String[] getPermissionsToRequest() {
|
||||||
return new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
return new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.provider.Settings;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
@ -31,6 +32,15 @@ public class NavigationUtil {
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void openSettings(@NonNull final Context context) {
|
||||||
|
Intent intent = new Intent();
|
||||||
|
|
||||||
|
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||||
|
intent.setData(Uri.fromParts("package", context.getPackageName(), null));
|
||||||
|
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
public static void goToLogin(@NonNull final Context context) {
|
public static void goToLogin(@NonNull final Context context) {
|
||||||
final Intent intent = new Intent(context, LoginActivity.class);
|
final Intent intent = new Intent(context, LoginActivity.class);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue