package com.tws.plugin.servicemanager.compat;
import java.util.Map;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.util.ArrayMap;
import com.tws.plugin.servicemanager.util.RefIectUtil;
/**
* @author yongchen
*/
public class BundleCompat {
public static IBinder getBinder(Bundle bundle, String key) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
return bundle.getBinder(key);
} else {
return (IBinder) RefIectUtil.invokeMethod(bundle, Bundle.class, "getIBinder", new Class[]{String.class}, new Object[]{key});
}
}
public static void putBinder(Bundle bundle, String key, IBinder iBinder) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
bundle.putBinder(key, iBinder);
} else {
RefIectUtil.invokeMethod(bundle, Bundle.class, "putIBinder", new Class[]{String.class, IBinder.class}, new Object[]{key, iBinder});
}
}
public static void putObject(Bundle bundle, String key, Object value) {
if (Build.VERSION.SDK_INT < 19) {
RefIectUtil.invokeMethod(bundle, Bundle.class, "unparcel", (Class[])null, (Object[])null);
Map<String, Object> mMap = (Map<String, Object>) RefIectUtil.getFieldObject(bundle, Bundle.class, "mMap");
mMap.put(key, value);
} else if (Build.VERSION.SDK_INT == 19) {
RefIectUtil.invokeMethod(bundle, Bundle.class, "unparcel", (Class[])null, (Object[])null);
ArrayMap<String, Object> mMap = (ArrayMap<String, Object>) RefIectUtil.getFieldObject(bundle, Bundle.class, "mMap");
mMap.put(key, value);
} else if(Build.VERSION.SDK_INT > 19) {
RefIectUtil.invokeMethod(bundle, android.os.BaseBundle.class, "unparcel", (Class[])null, (Object[])null);
ArrayMap<String, Object> mMap = (ArrayMap<String, Object>) RefIectUtil.getFieldObject(bundle, android.os.BaseBundle.class, "mMap");
mMap.put(key, value);
}
}
}