diff --git a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java index a95025d..0e0748c 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java +++ b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java @@ -14,6 +14,7 @@ import android.view.MenuItem; import android.view.View; import net.headlezz.notificationlogger.createnotification.NotificationCreationFragment; +import net.headlezz.notificationlogger.logger.LoggerUtils; import net.headlezz.notificationlogger.presenter.LoggerWarningPresenter; import butterknife.Bind; @@ -59,6 +60,8 @@ public class MainActivity extends AppCompatActivity implements SharedPreferences @Override protected void onResume() { super.onResume(); + if(!LoggerUtils.isLoggerRunning()) + LoggerUtils.buildNotificationAccessDialog(this).show(); if(getSupportFragmentManager().getBackStackEntryCount() > 0) mFAB.setVisibility(View.GONE); } diff --git a/app/src/main/java/net/headlezz/notificationlogger/logger/LoggerUtils.java b/app/src/main/java/net/headlezz/notificationlogger/logger/LoggerUtils.java new file mode 100644 index 0000000..1f64635 --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/logger/LoggerUtils.java @@ -0,0 +1,36 @@ +package net.headlezz.notificationlogger.logger; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.support.v7.app.AlertDialog; + +import net.headlezz.notificationlogger.R; + +public class LoggerUtils { + + public static void openNotificationSystemSettings(Context context) { + Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); + context.startActivity(intent); + } + + public static boolean isLoggerRunning() { + return NotificationLoggerService.isRunning; + } + + public static AlertDialog buildNotificationAccessDialog(final Context context) { + return new AlertDialog.Builder(context) + .setTitle(context.getString(R.string.main_dialog_enable_notification_access_title)) + .setMessage(context.getString(R.string.main_dialog_enable_notification_access_message)) + .setPositiveButton(R.string.main_dialog_enable_notification_access_positive, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + openNotificationSystemSettings(context); + } + }) + .setNegativeButton(R.string.main_dialog_enable_notification_access_negative, null) + .create(); + } + +} diff --git a/app/src/main/java/net/headlezz/notificationlogger/logger/NotificationLoggerService.java b/app/src/main/java/net/headlezz/notificationlogger/logger/NotificationLoggerService.java index 246f2c8..73d5238 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/logger/NotificationLoggerService.java +++ b/app/src/main/java/net/headlezz/notificationlogger/logger/NotificationLoggerService.java @@ -18,7 +18,14 @@ import timber.log.Timber; public class NotificationLoggerService extends NotificationListenerService implements SharedPreferences.OnSharedPreferenceChangeListener { + /** + * true if logger is enabled in system settings + */ public static boolean isRunning = false; + + /** + * true if logger is enabled in app settings + */ public static boolean isEnabled = true; SharedPreferences mSharedPrefs; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50b4e71..6167c86 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,6 +5,10 @@ Logging is disabled. Enable + Enable Notification Access + In order to log notifcations, this app needs access to your notification system. + Open settings + Cancel Notification Settings Support