90 lines
5.1 KiB
Java
90 lines
5.1 KiB
Java
package androidx.core.app;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Application;
|
|
import android.app.Service;
|
|
import android.content.BroadcastReceiver;
|
|
import android.content.ContentProvider;
|
|
import android.content.Intent;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.RequiresApi;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
@RequiresApi(28)
|
|
public class AppComponentFactory extends android.app.AppComponentFactory {
|
|
@Override // android.app.AppComponentFactory
|
|
@NonNull
|
|
public final Activity instantiateActivity(@NonNull ClassLoader classLoader, @NonNull String str, @Nullable Intent intent) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
return (Activity) CoreComponentFactory.checkCompatWrapper(instantiateActivityCompat(classLoader, str, intent));
|
|
}
|
|
|
|
@NonNull
|
|
public Activity instantiateActivityCompat(@NonNull ClassLoader classLoader, @NonNull String str, @Nullable Intent intent) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
try {
|
|
return (Activity) Class.forName(str, false, classLoader).asSubclass(Activity.class).getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
|
|
} catch (NoSuchMethodException | InvocationTargetException e) {
|
|
throw new RuntimeException("Couldn't call constructor", e);
|
|
}
|
|
}
|
|
|
|
@Override // android.app.AppComponentFactory
|
|
@NonNull
|
|
public final Application instantiateApplication(@NonNull ClassLoader classLoader, @NonNull String str) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
return (Application) CoreComponentFactory.checkCompatWrapper(instantiateApplicationCompat(classLoader, str));
|
|
}
|
|
|
|
@NonNull
|
|
public Application instantiateApplicationCompat(@NonNull ClassLoader classLoader, @NonNull String str) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
try {
|
|
return (Application) Class.forName(str, false, classLoader).asSubclass(Application.class).getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
|
|
} catch (NoSuchMethodException | InvocationTargetException e) {
|
|
throw new RuntimeException("Couldn't call constructor", e);
|
|
}
|
|
}
|
|
|
|
@Override // android.app.AppComponentFactory
|
|
@NonNull
|
|
public final ContentProvider instantiateProvider(@NonNull ClassLoader classLoader, @NonNull String str) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
return (ContentProvider) CoreComponentFactory.checkCompatWrapper(instantiateProviderCompat(classLoader, str));
|
|
}
|
|
|
|
@NonNull
|
|
public ContentProvider instantiateProviderCompat(@NonNull ClassLoader classLoader, @NonNull String str) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
try {
|
|
return (ContentProvider) Class.forName(str, false, classLoader).asSubclass(ContentProvider.class).getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
|
|
} catch (NoSuchMethodException | InvocationTargetException e) {
|
|
throw new RuntimeException("Couldn't call constructor", e);
|
|
}
|
|
}
|
|
|
|
@Override // android.app.AppComponentFactory
|
|
@NonNull
|
|
public final BroadcastReceiver instantiateReceiver(@NonNull ClassLoader classLoader, @NonNull String str, @Nullable Intent intent) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
return (BroadcastReceiver) CoreComponentFactory.checkCompatWrapper(instantiateReceiverCompat(classLoader, str, intent));
|
|
}
|
|
|
|
@NonNull
|
|
public BroadcastReceiver instantiateReceiverCompat(@NonNull ClassLoader classLoader, @NonNull String str, @Nullable Intent intent) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
try {
|
|
return (BroadcastReceiver) Class.forName(str, false, classLoader).asSubclass(BroadcastReceiver.class).getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
|
|
} catch (NoSuchMethodException | InvocationTargetException e) {
|
|
throw new RuntimeException("Couldn't call constructor", e);
|
|
}
|
|
}
|
|
|
|
@Override // android.app.AppComponentFactory
|
|
@NonNull
|
|
public final Service instantiateService(@NonNull ClassLoader classLoader, @NonNull String str, @Nullable Intent intent) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
return (Service) CoreComponentFactory.checkCompatWrapper(instantiateServiceCompat(classLoader, str, intent));
|
|
}
|
|
|
|
@NonNull
|
|
public Service instantiateServiceCompat(@NonNull ClassLoader classLoader, @NonNull String str, @Nullable Intent intent) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
|
|
try {
|
|
return (Service) Class.forName(str, false, classLoader).asSubclass(Service.class).getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
|
|
} catch (NoSuchMethodException | InvocationTargetException e) {
|
|
throw new RuntimeException("Couldn't call constructor", e);
|
|
}
|
|
}
|
|
}
|