package com.lody.virtual.server.notification; import android.app.Notification; import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; import com.lody.virtual.client.core.VirtualCore; /** * @author 247321543 */ @SuppressWarnings("deprecation") class NotificationCompatCompatV14 extends NotificationCompat { private final RemoteViewsFixer mRemoteViewsFixer; NotificationCompatCompatV14() { super(); mRemoteViewsFixer = new RemoteViewsFixer(this); } private RemoteViewsFixer getRemoteViewsFixer() { return mRemoteViewsFixer; } @Override public boolean dealNotification(int id, Notification notification, final String packageName) { Context appContext = getAppContext(packageName); if (appContext == null) { return false; } if (VirtualCore.get().isOutsideInstalled(packageName)) { getNotificationFixer().fixIconImage(appContext.getResources(), notification.contentView, false, notification); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { getNotificationFixer().fixIconImage(appContext.getResources(), notification.bigContentView, false, notification); } notification.icon = getHostContext().getApplicationInfo().icon; return true; } if (notification.tickerView != null) { if (isSystemLayout(notification.tickerView)) { getNotificationFixer().fixRemoteViewActions(appContext, false, notification.tickerView); } else { notification.tickerView = getRemoteViewsFixer().makeRemoteViews(id + ":tickerView", appContext, notification.tickerView, false, false); } } if (notification.contentView != null) { if (isSystemLayout(notification.contentView)) { boolean hasIconBitmap = getNotificationFixer().fixRemoteViewActions(appContext, false, notification.contentView); getNotificationFixer().fixIconImage(appContext.getResources(), notification.contentView, hasIconBitmap, notification); } else { notification.contentView = getRemoteViewsFixer().makeRemoteViews(id + ":contentView", appContext, notification.contentView, false, true); } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { if (notification.bigContentView != null) { if (isSystemLayout(notification.bigContentView)) { getNotificationFixer().fixRemoteViewActions(appContext, false, notification.bigContentView); } else { notification.bigContentView = getRemoteViewsFixer().makeRemoteViews(id + ":bigContentView", appContext, notification.bigContentView, true, true); } } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (notification.headsUpContentView != null) { if (isSystemLayout(notification.headsUpContentView)) { boolean hasIconBitmap = getNotificationFixer().fixRemoteViewActions(appContext, false, notification.headsUpContentView); getNotificationFixer().fixIconImage(appContext.getResources(), notification.contentView, hasIconBitmap, notification); } else { notification.headsUpContentView = getRemoteViewsFixer().makeRemoteViews(id + ":headsUpContentView", appContext, notification.headsUpContentView, false, false); } } } notification.icon = getHostContext().getApplicationInfo().icon; return true; } Context getAppContext(final String packageName) { Context context = null; try { context = getHostContext().createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return context; } }