328 lines
16 KiB
Java
328 lines
16 KiB
Java
package com.google.firebase.messaging;
|
|
|
|
import C.t;
|
|
import C.u;
|
|
import android.annotation.TargetApi;
|
|
import android.app.Notification;
|
|
import android.app.NotificationChannel;
|
|
import android.app.NotificationManager;
|
|
import android.app.PendingIntent;
|
|
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.Color;
|
|
import android.media.RingtoneManager;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
import android.os.SystemClock;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import com.google.android.gms.cloudmessaging.CloudMessagingReceiver;
|
|
import com.google.firebase.messaging.Constants;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public final class CommonNotificationBuilder {
|
|
private static final String ACTION_RECEIVER = "com.google.android.c2dm.intent.RECEIVE";
|
|
public static final String FCM_FALLBACK_NOTIFICATION_CHANNEL = "fcm_fallback_notification_channel";
|
|
public static final String FCM_FALLBACK_NOTIFICATION_CHANNEL_LABEL = "fcm_fallback_notification_channel_label";
|
|
private static final String FCM_FALLBACK_NOTIFICATION_CHANNEL_NAME_NO_RESOURCE = "Misc";
|
|
private static final int ILLEGAL_RESOURCE_ID = 0;
|
|
public static final String METADATA_DEFAULT_CHANNEL_ID = "com.google.firebase.messaging.default_notification_channel_id";
|
|
public static final String METADATA_DEFAULT_COLOR = "com.google.firebase.messaging.default_notification_color";
|
|
public static final String METADATA_DEFAULT_ICON = "com.google.firebase.messaging.default_notification_icon";
|
|
private static final AtomicInteger requestCodeProvider = new AtomicInteger((int) SystemClock.elapsedRealtime());
|
|
|
|
/* loaded from: classes3.dex */
|
|
public static class DisplayNotificationInfo {
|
|
public final int id;
|
|
public final u notificationBuilder;
|
|
public final String tag;
|
|
|
|
public DisplayNotificationInfo(u uVar, String str, int i) {
|
|
this.notificationBuilder = uVar;
|
|
this.tag = str;
|
|
this.id = i;
|
|
}
|
|
}
|
|
|
|
private CommonNotificationBuilder() {
|
|
}
|
|
|
|
private static PendingIntent createContentIntent(Context context, NotificationParams notificationParams, String str, PackageManager packageManager) {
|
|
Intent createTargetIntent = createTargetIntent(str, notificationParams, packageManager);
|
|
if (createTargetIntent == null) {
|
|
return null;
|
|
}
|
|
createTargetIntent.addFlags(67108864);
|
|
createTargetIntent.putExtras(notificationParams.paramsWithReservedKeysRemoved());
|
|
if (shouldUploadMetrics(notificationParams)) {
|
|
createTargetIntent.putExtra(Constants.MessageNotificationKeys.ANALYTICS_DATA, notificationParams.paramsForAnalyticsIntent());
|
|
}
|
|
return PendingIntent.getActivity(context, generatePendingIntentRequestCode(), createTargetIntent, getPendingIntentFlags(1073741824));
|
|
}
|
|
|
|
private static PendingIntent createDeleteIntent(Context context, Context context2, NotificationParams notificationParams) {
|
|
if (shouldUploadMetrics(notificationParams)) {
|
|
return createMessagingPendingIntent(context, context2, new Intent(CloudMessagingReceiver.IntentActionKeys.NOTIFICATION_DISMISS).putExtras(notificationParams.paramsForAnalyticsIntent()));
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private static PendingIntent createMessagingPendingIntent(Context context, Context context2, Intent intent) {
|
|
return PendingIntent.getBroadcast(context, generatePendingIntentRequestCode(), new Intent(ACTION_RECEIVER).setPackage(context2.getPackageName()).putExtra(CloudMessagingReceiver.IntentKeys.WRAPPED_INTENT, intent), getPendingIntentFlags(1073741824));
|
|
}
|
|
|
|
public static DisplayNotificationInfo createNotificationInfo(Context context, NotificationParams notificationParams) {
|
|
Bundle manifestMetadata = getManifestMetadata(context.getPackageManager(), context.getPackageName());
|
|
return createNotificationInfo(context, context, notificationParams, getOrCreateChannel(context, notificationParams.getNotificationChannelId(), manifestMetadata), manifestMetadata);
|
|
}
|
|
|
|
private static Intent createTargetIntent(String str, NotificationParams notificationParams, PackageManager packageManager) {
|
|
String string = notificationParams.getString(Constants.MessageNotificationKeys.CLICK_ACTION);
|
|
if (!TextUtils.isEmpty(string)) {
|
|
Intent intent = new Intent(string);
|
|
intent.setPackage(str);
|
|
intent.setFlags(268435456);
|
|
return intent;
|
|
}
|
|
Uri link = notificationParams.getLink();
|
|
if (link != null) {
|
|
Intent intent2 = new Intent("android.intent.action.VIEW");
|
|
intent2.setPackage(str);
|
|
intent2.setData(link);
|
|
return intent2;
|
|
}
|
|
Intent launchIntentForPackage = packageManager.getLaunchIntentForPackage(str);
|
|
if (launchIntentForPackage == null) {
|
|
Log.w(Constants.TAG, "No activity found to launch app");
|
|
}
|
|
return launchIntentForPackage;
|
|
}
|
|
|
|
private static int generatePendingIntentRequestCode() {
|
|
return requestCodeProvider.incrementAndGet();
|
|
}
|
|
|
|
private static Integer getColor(Context context, String str, Bundle bundle) {
|
|
if (!TextUtils.isEmpty(str)) {
|
|
try {
|
|
return Integer.valueOf(Color.parseColor(str));
|
|
} catch (IllegalArgumentException unused) {
|
|
Log.w(Constants.TAG, "Color is invalid: " + str + ". Notification will use default color.");
|
|
}
|
|
}
|
|
int i = bundle.getInt(METADATA_DEFAULT_COLOR, 0);
|
|
if (i == 0) {
|
|
return null;
|
|
}
|
|
try {
|
|
return Integer.valueOf(D.h.getColor(context, i));
|
|
} catch (Resources.NotFoundException unused2) {
|
|
Log.w(Constants.TAG, "Cannot find the color resource referenced in AndroidManifest.");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
/* JADX WARN: Type inference failed for: r0v2, types: [int] */
|
|
/* JADX WARN: Type inference failed for: r0v5 */
|
|
/* JADX WARN: Type inference failed for: r0v6 */
|
|
private static int getConsolidatedDefaults(NotificationParams notificationParams) {
|
|
boolean z3 = notificationParams.getBoolean(Constants.MessageNotificationKeys.DEFAULT_SOUND);
|
|
?? r02 = z3;
|
|
if (notificationParams.getBoolean(Constants.MessageNotificationKeys.DEFAULT_VIBRATE_TIMINGS)) {
|
|
r02 = (z3 ? 1 : 0) | 2;
|
|
}
|
|
return notificationParams.getBoolean(Constants.MessageNotificationKeys.DEFAULT_LIGHT_SETTINGS) ? r02 | 4 : r02;
|
|
}
|
|
|
|
private static Bundle getManifestMetadata(PackageManager packageManager, String str) {
|
|
try {
|
|
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(str, 128);
|
|
if (applicationInfo != null) {
|
|
Bundle bundle = applicationInfo.metaData;
|
|
if (bundle != null) {
|
|
return bundle;
|
|
}
|
|
}
|
|
} catch (PackageManager.NameNotFoundException e4) {
|
|
Log.w(Constants.TAG, "Couldn't get own application info: " + e4);
|
|
}
|
|
return Bundle.EMPTY;
|
|
}
|
|
|
|
@TargetApi(26)
|
|
public static String getOrCreateChannel(Context context, String str, Bundle bundle) {
|
|
String string;
|
|
try {
|
|
if (context.getPackageManager().getApplicationInfo(context.getPackageName(), 0).targetSdkVersion < 26) {
|
|
return null;
|
|
}
|
|
NotificationManager notificationManager = (NotificationManager) context.getSystemService(NotificationManager.class);
|
|
if (!TextUtils.isEmpty(str)) {
|
|
if (notificationManager.getNotificationChannel(str) != null) {
|
|
return str;
|
|
}
|
|
Log.w(Constants.TAG, "Notification Channel requested (" + str + ") has not been created by the app. Manifest configuration, or default, value will be used.");
|
|
}
|
|
String string2 = bundle.getString(METADATA_DEFAULT_CHANNEL_ID);
|
|
if (TextUtils.isEmpty(string2)) {
|
|
Log.w(Constants.TAG, "Missing Default Notification Channel metadata in AndroidManifest. Default value will be used.");
|
|
} else {
|
|
if (notificationManager.getNotificationChannel(string2) != null) {
|
|
return string2;
|
|
}
|
|
Log.w(Constants.TAG, "Notification Channel set in AndroidManifest.xml has not been created by the app. Default value will be used.");
|
|
}
|
|
if (notificationManager.getNotificationChannel(FCM_FALLBACK_NOTIFICATION_CHANNEL) == null) {
|
|
int identifier = context.getResources().getIdentifier(FCM_FALLBACK_NOTIFICATION_CHANNEL_LABEL, "string", context.getPackageName());
|
|
if (identifier == 0) {
|
|
Log.e(Constants.TAG, "String resource \"fcm_fallback_notification_channel_label\" is not found. Using default string channel name.");
|
|
string = FCM_FALLBACK_NOTIFICATION_CHANNEL_NAME_NO_RESOURCE;
|
|
} else {
|
|
string = context.getString(identifier);
|
|
}
|
|
notificationManager.createNotificationChannel(new NotificationChannel(FCM_FALLBACK_NOTIFICATION_CHANNEL, string, 3));
|
|
}
|
|
return FCM_FALLBACK_NOTIFICATION_CHANNEL;
|
|
} catch (PackageManager.NameNotFoundException unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static int getPendingIntentFlags(int i) {
|
|
return i | 67108864;
|
|
}
|
|
|
|
private static int getSmallIcon(PackageManager packageManager, Resources resources, String str, String str2, Bundle bundle) {
|
|
if (!TextUtils.isEmpty(str2)) {
|
|
int identifier = resources.getIdentifier(str2, "drawable", str);
|
|
if (identifier != 0 && isValidIcon(resources, identifier)) {
|
|
return identifier;
|
|
}
|
|
int identifier2 = resources.getIdentifier(str2, "mipmap", str);
|
|
if (identifier2 != 0 && isValidIcon(resources, identifier2)) {
|
|
return identifier2;
|
|
}
|
|
Log.w(Constants.TAG, "Icon resource " + str2 + " not found. Notification will use default icon.");
|
|
}
|
|
int i = bundle.getInt(METADATA_DEFAULT_ICON, 0);
|
|
if (i == 0 || !isValidIcon(resources, i)) {
|
|
try {
|
|
i = packageManager.getApplicationInfo(str, 0).icon;
|
|
} catch (PackageManager.NameNotFoundException e4) {
|
|
Log.w(Constants.TAG, "Couldn't get own application info: " + e4);
|
|
}
|
|
}
|
|
return (i == 0 || !isValidIcon(resources, i)) ? android.R.drawable.sym_def_app_icon : i;
|
|
}
|
|
|
|
private static Uri getSound(String str, NotificationParams notificationParams, Resources resources) {
|
|
String soundResourceName = notificationParams.getSoundResourceName();
|
|
if (TextUtils.isEmpty(soundResourceName)) {
|
|
return null;
|
|
}
|
|
if ("default".equals(soundResourceName) || resources.getIdentifier(soundResourceName, "raw", str) == 0) {
|
|
return RingtoneManager.getDefaultUri(2);
|
|
}
|
|
return Uri.parse("android.resource://" + str + "/raw/" + soundResourceName);
|
|
}
|
|
|
|
private static String getTag(NotificationParams notificationParams) {
|
|
String string = notificationParams.getString(Constants.MessageNotificationKeys.TAG);
|
|
if (!TextUtils.isEmpty(string)) {
|
|
return string;
|
|
}
|
|
return "FCM-Notification:" + SystemClock.uptimeMillis();
|
|
}
|
|
|
|
@TargetApi(26)
|
|
private static boolean isValidIcon(Resources resources, int i) {
|
|
return true;
|
|
}
|
|
|
|
public static boolean shouldUploadMetrics(NotificationParams notificationParams) {
|
|
return notificationParams.getBoolean(Constants.AnalyticsKeys.ENABLED);
|
|
}
|
|
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
/* JADX WARN: Type inference failed for: r4v6, types: [C.s, java.lang.Object, C.v] */
|
|
public static DisplayNotificationInfo createNotificationInfo(Context context, Context context2, NotificationParams notificationParams, String str, Bundle bundle) {
|
|
String packageName = context2.getPackageName();
|
|
Resources resources = context2.getResources();
|
|
PackageManager packageManager = context2.getPackageManager();
|
|
u uVar = new u(context2, str);
|
|
String possiblyLocalizedString = notificationParams.getPossiblyLocalizedString(resources, packageName, Constants.MessageNotificationKeys.TITLE);
|
|
if (!TextUtils.isEmpty(possiblyLocalizedString)) {
|
|
uVar.f252e = u.b(possiblyLocalizedString);
|
|
}
|
|
String possiblyLocalizedString2 = notificationParams.getPossiblyLocalizedString(resources, packageName, Constants.MessageNotificationKeys.BODY);
|
|
if (!TextUtils.isEmpty(possiblyLocalizedString2)) {
|
|
uVar.f253f = u.b(possiblyLocalizedString2);
|
|
?? obj = new Object();
|
|
obj.f247b = u.b(possiblyLocalizedString2);
|
|
uVar.e(obj);
|
|
}
|
|
uVar.f265u.icon = getSmallIcon(packageManager, resources, packageName, notificationParams.getString(Constants.MessageNotificationKeys.ICON), bundle);
|
|
Uri sound = getSound(packageName, notificationParams, resources);
|
|
if (sound != null) {
|
|
Notification notification = uVar.f265u;
|
|
notification.sound = sound;
|
|
notification.audioStreamType = -1;
|
|
notification.audioAttributes = t.a(t.e(t.c(t.b(), 4), 5));
|
|
}
|
|
uVar.f254g = createContentIntent(context, notificationParams, packageName, packageManager);
|
|
PendingIntent createDeleteIntent = createDeleteIntent(context, context2, notificationParams);
|
|
if (createDeleteIntent != null) {
|
|
uVar.f265u.deleteIntent = createDeleteIntent;
|
|
}
|
|
Integer color = getColor(context2, notificationParams.getString(Constants.MessageNotificationKeys.COLOR), bundle);
|
|
if (color != null) {
|
|
uVar.f261q = color.intValue();
|
|
}
|
|
uVar.c(!notificationParams.getBoolean(Constants.MessageNotificationKeys.STICKY));
|
|
uVar.f260o = notificationParams.getBoolean(Constants.MessageNotificationKeys.LOCAL_ONLY);
|
|
String string = notificationParams.getString(Constants.MessageNotificationKeys.TICKER);
|
|
if (string != null) {
|
|
uVar.f265u.tickerText = u.b(string);
|
|
}
|
|
Integer notificationPriority = notificationParams.getNotificationPriority();
|
|
if (notificationPriority != null) {
|
|
uVar.f255j = notificationPriority.intValue();
|
|
}
|
|
Integer visibility = notificationParams.getVisibility();
|
|
if (visibility != null) {
|
|
uVar.f262r = visibility.intValue();
|
|
}
|
|
Integer notificationCount = notificationParams.getNotificationCount();
|
|
if (notificationCount != null) {
|
|
uVar.i = notificationCount.intValue();
|
|
}
|
|
Long l4 = notificationParams.getLong(Constants.MessageNotificationKeys.EVENT_TIME);
|
|
if (l4 != null) {
|
|
uVar.f256k = true;
|
|
uVar.f265u.when = l4.longValue();
|
|
}
|
|
long[] vibrateTimings = notificationParams.getVibrateTimings();
|
|
if (vibrateTimings != null) {
|
|
uVar.f265u.vibrate = vibrateTimings;
|
|
}
|
|
int[] lightSettings = notificationParams.getLightSettings();
|
|
if (lightSettings != null) {
|
|
int i = lightSettings[0];
|
|
int i4 = lightSettings[1];
|
|
int i5 = lightSettings[2];
|
|
Notification notification2 = uVar.f265u;
|
|
notification2.ledARGB = i;
|
|
notification2.ledOnMS = i4;
|
|
notification2.ledOffMS = i5;
|
|
notification2.flags = (notification2.flags & (-2)) | ((i4 == 0 || i5 == 0) ? 0 : 1);
|
|
}
|
|
uVar.d(getConsolidatedDefaults(notificationParams));
|
|
return new DisplayNotificationInfo(uVar, getTag(notificationParams), 0);
|
|
}
|
|
}
|