diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/IntroActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/IntroActivity.java
index e10480f1..85a085bb 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/IntroActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/IntroActivity.java
@@ -35,4 +35,9 @@ public class IntroActivity extends AppIntro {
}
return true;
}
+
+ @Override
+ public void onBackPressed() {
+ previous();
+ }
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java
index d4afc5d7..a76805dc 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java
@@ -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);
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 f640eb6a..3f7d307d 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
@@ -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();
}
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsMusicServiceActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsMusicServiceActivity.java
index c43d8426..8961503c 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsMusicServiceActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsMusicServiceActivity.java
@@ -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
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java
index fa20292f..7d1e5a00 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java
@@ -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);
+ }
}
});
}
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index ea146214..626170c6 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -172,7 +172,7 @@
Besonderes Dankeschön an
Änderungen
Lizenzen
- Die Rechte um auf den externen Speicher zuzugreifen wurden verweigert.
+ Die Rechte um auf den externen Speicher zuzugreifen wurden verweigert.
zurück
Unterstütze die Entwicklung
Vielen Dank!
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index a78d7fb0..d2343bcf 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -172,7 +172,7 @@
Agradecimientos especiales a
Lista de cambios
Licencias
- Permiso para acceder al almacenamiento externo denegado.
+ Permiso para acceder al almacenamiento externo denegado.
regresar
Apoyar desarrollo
¡Gracias!
diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml
index 792b7b61..fe3ae768 100644
--- a/app/src/main/res/values-es-rUS/strings.xml
+++ b/app/src/main/res/values-es-rUS/strings.xml
@@ -172,7 +172,7 @@
Agradecimientos especiales a
Lista de cambios
Licencias
- Permiso para acceder al almacenamiento externo denegado.
+ Permiso para acceder al almacenamiento externo denegado.
regresar
Apoyar el desarrollo
¡Gracias!
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 20e22981..865d5abf 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -172,7 +172,7 @@
Un grand merci à
Changelog
Licences
- Accès au stockage externe refusé.
+ Accès au stockage externe refusé.
Retour
Faire un don
Merci !
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index 843e550b..aea492d7 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -171,7 +171,7 @@
Obojena podnožja
Posebna zahvala
Promjene
- Dopuštenje za pristup vanjskoj pohrani je odbijeno.
+ Dopuštenje za pristup vanjskoj pohrani je odbijeno.
natrag
Podržite razvoj
Hvala vam!
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 7eab7517..a2554b34 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -168,7 +168,7 @@
Footer berwarna
Terima kasih khusus kepada
Log perubahan
- "Izin akses memori eksternal ditolak. "
+ "Izin akses memori eksternal ditolak. "
kembali
Dukung pengembangan
Terima kasih!
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 7eab7517..a2554b34 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -168,7 +168,7 @@
Footer berwarna
Terima kasih khusus kepada
Log perubahan
- "Izin akses memori eksternal ditolak. "
+ "Izin akses memori eksternal ditolak. "
kembali
Dukung pengembangan
Terima kasih!
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index ccaca088..54f356c6 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -171,7 +171,7 @@
Riquadri colorati
Ringraziamenti speciali a
Modifiche
- Permesso per accedere alla memoria esterna negato.
+ Permesso per accedere alla memoria esterna negato.
indietro
Supporta lo sviluppo
Grazie!
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 260c0419..adf27b72 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -166,7 +166,7 @@
색칠된 앨범 카드
"특별히 감사드립니다 : "
변경점
- 외장 메모리 접근 권한이 거부되었습니다.
+ 외장 메모리 접근 권한이 거부되었습니다.
뒤로
개발자 지원하기
감사합니다!
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 00d64b50..09637d3f 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -168,7 +168,7 @@
Gekleurde voetkaders
Speciale dank aan
Changelog
- Toegang tot externe opslag geweigerd.
+ Toegang tot externe opslag geweigerd.
Terug
Ondersteun ontwikkeling
Dankjewel!
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index d23228ba..58523a17 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -170,7 +170,7 @@
Kolorowe stopki
Specjalne podziękowania dla
Lista zmian
- Pozwolenie na dostęp do pamięci zewnętrznej odrzucone
+ Pozwolenie na dostęp do pamięci zewnętrznej odrzucone
Wróć
Wspomóż rozwój
Dziękuję!
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 784b2a6b..0d0281cb 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -168,7 +168,7 @@
Rodapés coloridos
Agradecimentos especiais para
Novidades
- Permissão para acessar armazenamento externo negado.
+ Permissão para acessar armazenamento externo negado.
voltar
Apoiar o desenvolvimento
Obrigado!
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 9dfd6bd1..0233dc3f 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -168,7 +168,7 @@
Rodapés coloridos
Agradecimentos especiais a
Changelog
- Permissão negada para aceder a armazenamento externo.
+ Permissão negada para aceder a armazenamento externo.
voltar
Apoiar o desenvolvimento
Obrigado!
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 234c5cb9..7eb75388 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -171,7 +171,7 @@
Окрашенные нижние колонтитулы
Особая благодарность
Список изменений
- В разрешении на доступ к внешнему хранилищу отказано.
+ В разрешении на доступ к внешнему хранилищу отказано.
назад
Поддержать разработку
Спасибо!
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 01f11d68..d4d04c29 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -171,7 +171,7 @@
Renkli alt bilgiler
Özel teşekkür
Sürüm Notları
- Harici depolamaya erişmek için izin verilmedi
+ Harici depolamaya erişmek için izin verilmedi
geri
Geliştirmeyi destekleyin
Teşekkürler
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 19b23734..6dbfc8a2 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -168,7 +168,7 @@
Фарбовані колонтитули
Особлива подяка
Список змін
- У дозволі на доступ до зовнішньої пам’яті відмовлено.
+ У дозволі на доступ до зовнішньої пам’яті відмовлено.
назад
Підтримати розробника
Щиро дякую!
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 844504d6..d6cf8a3f 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -171,7 +171,7 @@
变色页脚
特别感谢
更新日志
- 访问外部存储的权限被拒绝。
+ 访问外部存储的权限被拒绝。
返回
支持开发者
非常感谢!
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 044e2f57..051c1846 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -166,7 +166,7 @@
彩色的註腳
特別感謝
新功能
- 無法取得存取外部儲存空間的權限。
+ 無法取得存取外部儲存空間的權限。
返回
支援開發
感謝您!
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9ef9cf3a..39a71015 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -182,7 +182,8 @@
Special thanks to
Changelog
Licenses
- Permission to access external storage denied.
+ Permissions denied.
+ Permission to access external storage denied.
back
Support development
Thank you!