From 82642ce94ab70aa126c439a893bd1586cf8dad1b Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Wed, 30 Dec 2015 16:13:21 +0100 Subject: [PATCH] Fixed AppIntro, renamed some strings. --- .../ui/activities/IntroActivity.java | 5 ++ .../ui/activities/MainActivity.java | 23 ++++-- .../ui/activities/base/AbsBaseActivity.java | 71 ++++++++++++++----- .../base/AbsMusicServiceActivity.java | 3 + .../player/PlaybackControlsFragment.java | 6 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-es-rES/strings.xml | 2 +- app/src/main/res/values-es-rUS/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-in/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ko/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt-rPT/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 3 +- 24 files changed, 104 insertions(+), 43 deletions(-) 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!