Skip to content

Commit fc4219e

Browse files
authored
Merge pull request willowtreeapps#72 from ToxicBakery/feature/minimum-required-api
willowtreeapps#71 Added minimum api level support to plugins
2 parents ef22180 + 4fddab0 commit fc4219e

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

hyperion-core/src/main/java/com/willowtreeapps/hyperion/core/internal/AppComponent.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ static void init(Application application) {
3333
.appModule(new AppModule(application))
3434
.build();
3535
for (Plugin plugin : ServiceLoader.load(Plugin.class)) {
36-
plugin.create(application, INSTANCE.getApplicationExtension());
36+
if (plugin.deviceMeetsMinimumApiRequirement()) {
37+
plugin.create(application, INSTANCE.getApplicationExtension());
38+
}
3739
}
3840
}
3941
}

hyperion-core/src/main/java/com/willowtreeapps/hyperion/core/internal/PluginLoader.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.willowtreeapps.hyperion.core.PluginSource;
66
import com.willowtreeapps.hyperion.plugin.v1.Plugin;
77

8+
import java.util.HashSet;
89
import java.util.Set;
910
import java.util.concurrent.Executor;
1011

@@ -34,7 +35,13 @@ public void run() {
3435
Try<Plugins> result;
3536
try {
3637
final Set<Plugin> plugins = pluginSource.getPlugins();
37-
result = Try.successful(new Plugins(plugins));
38+
Set<Plugin> compatiblePlugins = new HashSet<>();
39+
for (Plugin plugin : plugins) {
40+
if (plugin.deviceMeetsMinimumApiRequirement()) {
41+
compatiblePlugins.add(plugin);
42+
}
43+
}
44+
result = Try.successful(new Plugins(compatiblePlugins));
3845
} catch (Throwable t) {
3946
result = Try.failure(t);
4047
}

hyperion-plugin/src/main/java/com/willowtreeapps/hyperion/plugin/v1/Plugin.java

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.willowtreeapps.hyperion.plugin.v1;
22

33
import android.content.Context;
4+
import android.os.Build;
45
import android.support.annotation.NonNull;
56
import android.support.annotation.Nullable;
67

@@ -15,6 +16,10 @@ public final void create(@NonNull Context context, @NonNull ApplicationExtension
1516
onApplicationCreated(context);
1617
}
1718

19+
public final boolean deviceMeetsMinimumApiRequirement() {
20+
return Build.VERSION.SDK_INT >= minimumRequiredApi();
21+
}
22+
1823
@SuppressWarnings("WeakerAccess")
1924
protected void onApplicationCreated(@NonNull Context context) {
2025

@@ -33,4 +38,13 @@ protected ApplicationExtension getApplicationExtension() {
3338
return extension;
3439
}
3540

41+
/**
42+
* Define the minimum required API level for the plugin. The Hyperion minimum supported API is ICS_MR1 (15).
43+
*
44+
* @return minimum required api level
45+
*/
46+
protected int minimumRequiredApi() {
47+
return Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1;
48+
}
49+
3650
}

0 commit comments

Comments
 (0)