From 4d1efb4fd4c468569f9302389ea6a637163e8a1d Mon Sep 17 00:00:00 2001 From: Chris Basinger Date: Sat, 6 Feb 2021 19:24:16 -0600 Subject: [PATCH 1/2] - utility methods for Android components. - check whether component is enabled - check whether component is disabled - enable component - disable component --- .../utilcode/util/AndroidComponentUtils.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java new file mode 100644 index 000000000..2591513b5 --- /dev/null +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java @@ -0,0 +1,96 @@ +package com.blankj.utilcode.util; + +import android.content.ComponentName; +import android.content.Context; +import android.content.pm.PackageManager; + +/* + ( ( ) ( ( ( + )\ ))\ ) * ) ( /( )\ ) ( )\ ) )\ ) + ( ( ( (()/(()/( ` ) /( )\()|()/(( )\ (()/( (()/( + )\ )\ )\ /(_))(_)) ( )(_)|(_)\ /(_))\((((_)( /(_)) /(_)) +((_)((_)((_|_))(_)) (_(_()) _((_|_))((_))\ _ )(_))_ (_)) +| __\ \ / /|_ _| | |_ _|| || | _ \ __(_)_\(_) \/ __| +| _| \ V / | || |__ | | | __ | / _| / _ \ | |) \__ \ +|___| \_/ |___|____| |_| |_||_|_|_\___/_/ \_\|___/|___/ +....................../´¯/) +....................,/¯../ +.................../..../ +............./´¯/'...'/´¯¯`·¸ +........../'/.../..../......./¨¯\ +........('(...´...´.... ¯~/'...') +.........\.................'...../ +..........''...\.......... _.·´ +............\..............( +..............\.............\... +*/ + +/** + * @author Chris Basinger + * @email evilthreads669966@gmail.com + * @date 02/06/20 + * + * provides Android component helper methods for enabling, disabling, and checking whether enabled or disabled. + **/ +public final class AndroidComponentUtils { + + /** + * Checks whether a component is enabled. Whether it can be instantiated. + * + * @param ctx android application context + * @param component the component's class. example: MyComponent.class + * @return returns true if the component is enabled + */ + public static Boolean isComponentEnabled(Context ctx, Class component){ + final ComponentName componentName = new ComponentName(ctx, component); + final int state = ctx.getPackageManager().getComponentEnabledSetting(componentName); + return state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + } + + /** + * Checks whether a component is disabled. Whether it can be instantiated. + * + * @param ctx android application context + * @param component the component's class. example: MyComponent.class + * @return returns true if the component is disabled + */ + public static Boolean isComponentDisabled(Context ctx, Class component){ + final ComponentName componentName = new ComponentName(ctx, component); + final int state = ctx.getPackageManager().getComponentEnabledSetting(componentName); + return state != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + } + + /** + * Enables an Android component for use if it is not already enabled + * + * @param ctx android application context + * @param component the component's class. example: MyComponent.class + * @return returns true if the component wasn't already enabled + */ + public static Boolean enableComponent(Context ctx, Class component){ + final ComponentName componentName = new ComponentName(ctx, component); + final int state = ctx.getPackageManager().getComponentEnabledSetting(componentName); + if(state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED){ + ctx.getPackageManager().setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); + return true; + } + return false; + } + + /** + * Disables an Android component for use if it is not already disabled + * + * @param ctx android application context + * @param component the component's class. example: MyComponent.class + * @return returns true if the component wasn't already disabled. + */ + public static Boolean disableComponent(Context ctx, Class component){ + final ComponentName componentName = new ComponentName(ctx, component); + final int state = ctx.getPackageManager().getComponentEnabledSetting(componentName); + if(state != PackageManager.COMPONENT_ENABLED_STATE_DISABLED){ + ctx.getPackageManager().setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + return true; + } + return false; + } +} From d96dad1633f15785560bbe8942d88eb0f98bcd67 Mon Sep 17 00:00:00 2001 From: Chris Basinger Date: Sat, 6 Feb 2021 22:45:16 -0600 Subject: [PATCH 2/2] - fix equality check --- .../java/com/blankj/utilcode/util/AndroidComponentUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java index 2591513b5..f1a4e5016 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AndroidComponentUtils.java @@ -57,7 +57,7 @@ public static Boolean isComponentEnabled(Context ctx, Class component){ public static Boolean isComponentDisabled(Context ctx, Class component){ final ComponentName componentName = new ComponentName(ctx, component); final int state = ctx.getPackageManager().getComponentEnabledSetting(componentName); - return state != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + return state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED; } /**