package com.lody.virtual.client.ipc; import android.app.Notification; import android.os.IBinder; import android.os.RemoteException; import com.lody.virtual.client.core.VirtualCore; import com.lody.virtual.server.INotificationManager; import com.lody.virtual.server.notification.NotificationCompat; /** * Fake notification manager */ public class VNotificationManager { private static final VNotificationManager sInstance = new VNotificationManager(); private final NotificationCompat mNotificationCompat; private INotificationManager mRemote; private VNotificationManager() { mNotificationCompat = NotificationCompat.create(); } public static VNotificationManager get() { return sInstance; } public INotificationManager getService() { if (mRemote == null) { synchronized (VNotificationManager.class) { if (mRemote == null) { final IBinder pmBinder = ServiceManagerNative.getService(ServiceManagerNative.NOTIFICATION); mRemote = INotificationManager.Stub.asInterface(pmBinder); } } } return mRemote; } public boolean dealNotification(int id, Notification notification, String packageName) { return VirtualCore.get().getHostPkg().equals(packageName) || mNotificationCompat.dealNotification(id, notification, packageName); } public int dealNotificationId(int id, String packageName, String tag, int userId) { try { return getService().dealNotificationId(id, packageName, tag, userId); } catch (RemoteException e) { e.printStackTrace(); } return id; } public String dealNotificationTag(int id, String packageName, String tag, int userId) { try { return getService().dealNotificationTag(id, packageName, tag, userId); } catch (RemoteException e) { e.printStackTrace(); } return tag; } public boolean areNotificationsEnabledForPackage(String packageName, int userId) { try { return getService().areNotificationsEnabledForPackage(packageName, userId); } catch (RemoteException e) { e.printStackTrace(); return true; } } public void setNotificationsEnabledForPackage(String packageName, boolean enable, int userId) { try { getService().setNotificationsEnabledForPackage(packageName, enable, userId); } catch (RemoteException e) { e.printStackTrace(); } } public void addNotification(int id, String tag, String packageName, int userId) { try { getService().addNotification(id, tag, packageName, userId); } catch (RemoteException e) { e.printStackTrace(); } } public void cancelAllNotification(String packageName, int userId) { try { getService().cancelAllNotification(packageName, userId); } catch (RemoteException e) { e.printStackTrace(); } } }