diff --git a/app/src/main/java/net/headlezz/notificationlogger/NotificationInfoDialog.java b/app/src/main/java/net/headlezz/notificationlogger/NotificationInfoDialog.java
new file mode 100644
index 0000000..849fa89
--- /dev/null
+++ b/app/src/main/java/net/headlezz/notificationlogger/NotificationInfoDialog.java
@@ -0,0 +1,50 @@
+package net.headlezz.notificationlogger;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.support.v7.app.AlertDialog;
+import android.text.Html;
+import android.text.Spanned;
+import android.widget.Toast;
+
+import net.headlezz.notificationlogger.logger.LoggedNotification;
+
+public class NotificationInfoDialog extends AlertDialog implements DialogInterface.OnClickListener {
+
+ LoggedNotification mNotification;
+
+ public NotificationInfoDialog(Context context, LoggedNotification notification) {
+ super(context);
+ mNotification = notification;
+
+ setTitle(notification.appName);
+ setIcon(PackageUtils.getApplicationLauncherIcon(context, notification.packageName));
+ setMessage(getDialogContent());
+ setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.main_notification_details_button_ok), this);
+ setButton(AlertDialog.BUTTON_NEUTRAL, context.getString(R.string.main_notification_details_button_app_info), this);
+ }
+
+ private Spanned getDialogContent() {
+ StringBuilder contentBuilder = new StringBuilder();
+ contentBuilder.append(getContext().getString(R.string.main_notification_details_package, mNotification.packageName));
+ contentBuilder.append("
");
+ contentBuilder.append(getContext().getString(R.string.main_notification_details_date,
+ 9999));
+ contentBuilder.append("
");
+ contentBuilder.append(getContext().getString(R.string.main_notification_details_userid, mNotification.userId));
+ contentBuilder.append("
");
+ contentBuilder.append("
");
+ contentBuilder.append(getContext().getString(R.string.main_notification_details_title, mNotification.title));
+ contentBuilder.append("
");
+ contentBuilder.append(getContext().getString(R.string.main_notification_details_message, mNotification.message));
+ return Html.fromHtml(contentBuilder.toString());
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if(which == AlertDialog.BUTTON_NEUTRAL) {
+ if(!PackageUtils.showAppInfoActivity(getContext(), mNotification.packageName))
+ Toast.makeText(getContext(), R.string.notification_info_dialog_app_info_error, Toast.LENGTH_LONG).show();
+ }
+ }
+}
diff --git a/app/src/main/java/net/headlezz/notificationlogger/PackageUtils.java b/app/src/main/java/net/headlezz/notificationlogger/PackageUtils.java
index e48f59a..ecc5ca9 100644
--- a/app/src/main/java/net/headlezz/notificationlogger/PackageUtils.java
+++ b/app/src/main/java/net/headlezz/notificationlogger/PackageUtils.java
@@ -1,10 +1,13 @@
package net.headlezz.notificationlogger;
+import android.content.ActivityNotFoundException;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
import timber.log.Timber;
@@ -49,5 +52,21 @@ public class PackageUtils {
}
-
+ /**
+ * @param context
+ * @param packageName
+ * @return true if application settings opened successful
+ */
+ public static boolean showAppInfoActivity(Context context, String packageName) {
+ try {
+ Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+ intent.setData(Uri.parse("package:" + packageName));
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ context.startActivity(intent);
+ return true;
+ } catch ( ActivityNotFoundException e ) {
+ Timber.e("Failed to open app info", e);
+ return false;
+ }
+ }
}
diff --git a/app/src/main/java/net/headlezz/notificationlogger/notificationlist/NotificationListFragment.java b/app/src/main/java/net/headlezz/notificationlogger/notificationlist/NotificationListFragment.java
index 3e5d3cf..5f35b34 100644
--- a/app/src/main/java/net/headlezz/notificationlogger/notificationlist/NotificationListFragment.java
+++ b/app/src/main/java/net/headlezz/notificationlogger/notificationlist/NotificationListFragment.java
@@ -13,6 +13,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import net.headlezz.notificationlogger.NotificationInfoDialog;
import net.headlezz.notificationlogger.R;
import net.headlezz.notificationlogger.logger.LoggedNotification;
import net.headlezz.notificationlogger.logger.Logged_notificationTable;
@@ -96,5 +97,7 @@ public class NotificationListFragment extends Fragment implements LoaderManager.
Cursor cursor = getContext().getContentResolver().query(Logged_notificationTable.CONTENT_URI, null, qry, args, null);
LoggedNotification notification = Logged_notificationTable.getRow(cursor, true);
Timber.e(notification.title);
+
+ new NotificationInfoDialog(getContext(), notification).show();
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f6cd20c..8eb0bd2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -9,6 +9,13 @@
In order to log notifcations, this app needs access to your notification system.
Open settings
Cancel
+ Package: %1$s
+ Date: %1$s
+ User ID: %1$s
+ Title: %1$s
+ Message: %1$s
+ App Info
+ OK
Notification Settings
Support
@@ -47,6 +54,7 @@
No notifications found.
Notification small icon
Application icon for %s
+ Failed to display app info.
- Alarm