package com.lody.virtual.helper.compat;
import android.content.Intent;
import android.content.pm.ServiceInfo;
import android.os.Build;
import android.os.IBinder;
import android.os.IInterface;
import android.os.RemoteException;
import mirror.android.app.IApplicationThread;
import mirror.android.app.IApplicationThreadICSMR1;
import mirror.android.app.IApplicationThreadKitkat;
import mirror.android.content.res.CompatibilityInfo;
/**
* @author Lody
*/
public class IApplicationThreadCompat {
public static void scheduleCreateService(IInterface appThread, IBinder token, ServiceInfo info,
int processState) throws RemoteException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
IApplicationThreadKitkat.scheduleCreateService.call(appThread, token, info, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO.get(),
processState);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
IApplicationThreadICSMR1.scheduleCreateService.call(appThread, token, info, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO.get());
} else {
IApplicationThread.scheduleCreateService.call(appThread, token, info);
}
}
public static void scheduleBindService(IInterface appThread, IBinder token, Intent intent, boolean rebind,
int processState) throws RemoteException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
IApplicationThreadKitkat.scheduleBindService.call(appThread, token, intent, rebind, processState);
} else {
IApplicationThread.scheduleBindService.call(appThread, token, intent, rebind);
}
}
public static void scheduleUnbindService(IInterface appThread, IBinder token, Intent intent) throws RemoteException {
IApplicationThread.scheduleUnbindService.call(appThread, token, intent);
}
public static void scheduleServiceArgs(IInterface appThread, IBinder token, boolean taskRemoved,
int startId, int flags, Intent args) throws RemoteException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
IApplicationThreadICSMR1.scheduleServiceArgs.call(appThread, token, taskRemoved, startId, flags, args);
} else {
IApplicationThread.scheduleServiceArgs.call(appThread, token, startId, flags, args);
}
}
public static void scheduleStopService(IInterface appThread, IBinder token) throws RemoteException {
IApplicationThread.scheduleStopService.call(appThread, token);
}
}