/* * Copyright (C) 2014 singwhatiwanna(任玉刚) <singwhatiwanna@gmail.com> * * collaborator:田啸,宋思宇,Mr.Simple * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ryg.dynamicload.internal; import android.content.Intent; import android.os.Parcelable; import com.ryg.utils.DLConfigs; import java.io.Serializable; public class DLIntent extends Intent { private String mPluginPackage; private String mPluginClass; public DLIntent() { super(); } public DLIntent(String pluginPackage) { super(); this.mPluginPackage = pluginPackage; } public DLIntent(String pluginPackage, String pluginClass) { super(); this.mPluginPackage = pluginPackage; this.mPluginClass = pluginClass; } public DLIntent(String pluginPackage, Class<?> clazz) { super(); this.mPluginPackage = pluginPackage; this.mPluginClass = clazz.getName(); } public String getPluginPackage() { return mPluginPackage; } public void setPluginPackage(String pluginPackage) { this.mPluginPackage = pluginPackage; } public String getPluginClass() { return mPluginClass; } public void setPluginClass(String pluginClass) { this.mPluginClass = pluginClass; } public void setPluginClass(Class<?> clazz) { this.mPluginClass = clazz.getName(); } @Override public Intent putExtra(String name, Parcelable value) { setupExtraClassLoader(value); return super.putExtra(name, value); } @Override public Intent putExtra(String name, Serializable value) { setupExtraClassLoader(value); return super.putExtra(name, value); } private void setupExtraClassLoader(Object value) { ClassLoader pluginLoader = value.getClass().getClassLoader(); DLConfigs.sPluginClassloader = pluginLoader; setExtrasClassLoader(pluginLoader); } }