package com.madeinhk.utils; import android.annotation.TargetApi; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Build; import android.support.v4.app.NotificationCompat; import android.support.v4.app.RemoteInput; import com.madeinhk.english_chinesedictionary.DictionaryActivity; import com.madeinhk.english_chinesedictionary.R; import com.madeinhk.english_chinesedictionary.service.ECDictionaryService; import com.madeinhk.model.Word; public class QuickLookupNotificationHelper { private Context mContext; public QuickLookupNotificationHelper( Context context) { mContext = context; } public Notification buildInitialNotification() { return buildNotification(false, null); } public Notification buildNotificationForResult(Word result) { return buildNotification(true, result); } @TargetApi(Build.VERSION_CODES.N) private Notification buildNotification(boolean showResult, Word result) { NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext); builder.setSmallIcon(R.drawable.lookup_notification_drawable) .setContentTitle(mContext.getString(R.string.quick_lookup_notification_title)) .setOngoing(true) .setWhen(0) .setDefaults(0) // please be quiet .setColor(mContext.getColor(R.color.colorPrimaryDark)) .setVisibility(Notification.VISIBILITY_PUBLIC); if (showResult) { String response = mContext.getString(R.string.quick_lookup_notification_not_found); if (result != null) { response = String.format("%s %s", result.mWord, result.buildMeaningSummary()); PendingIntent clickIntent = PendingIntent.getActivity(mContext, 0, buildClickIntent(result), PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(clickIntent); } builder.setRemoteInputHistory(new String[]{response}); } String replyLabel = mContext.getString(R.string.quick_lookup_notification_reply_label); RemoteInput remoteInput = new RemoteInput.Builder(ECDictionaryService.KEY_TEXT_REPLY) .setLabel(replyLabel) .build(); PendingIntent lookupIntent = PendingIntent.getService(mContext, 1, ECDictionaryService .getQuickLookupIntent(mContext), PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Action lookupAction = new NotificationCompat.Action.Builder(R.drawable.ic_search, mContext.getString(R.string.quick_lookup_notification_action), lookupIntent) .addRemoteInput(remoteInput) .build(); builder.addAction(lookupAction); PendingIntent settingsIntent = PendingIntent.getActivity(mContext, 2, getSettingsIntent() , PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Action settingsAction = new NotificationCompat.Action.Builder(R.drawable.ic_settings_grey600_24dp, mContext.getString(R.string.action_settings), settingsIntent) .build(); builder.addAction(settingsAction); return builder.build(); } private Intent getSettingsIntent() { Intent intent = new Intent(mContext, DictionaryActivity.class); intent.setAction(DictionaryActivity.ACTION_SETTINGS); return intent; } private Intent buildClickIntent(Word word) { Intent intent = DictionaryActivity .getIntent(mContext, word.mWord); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return intent; } }