@@ -25,6 +25,7 @@ public class MethodCallImplementation implements MethodChannel.MethodCallHandler
2525 private final Context context ;
2626 private Activity activity ;
2727
28+ private static List <String > classNames = null ;
2829
2930 MethodCallImplementation (Context context , Activity activity ) {
3031 this .context = context ;
@@ -40,42 +41,49 @@ void setActivity(Activity activity) {
4041 public void onMethodCall (@ NonNull MethodCall call , @ NonNull MethodChannel .Result result ) {
4142
4243 switch (call .method ) {
43- case "switchTo" :
44- switchTo (call );
44+ case "initialize" :
45+ {
46+ classNames = call .arguments ();
4547 break ;
48+ }
49+ case "switchIconTo" :
50+ {
51+ switchIconTo (call );
52+ break ;
53+ }
4654 default :
4755 result .notImplemented ();
4856 break ;
4957 }
5058 }
5159
52- private void switchTo (MethodCall call ) {
53- List <Map <String , String >> args = call .arguments ();
54- String iconName = args .get (0 ).get ("iconName" );
55- String className = args .get (0 ).get ("className" );
56- PackageManager pm = activity .getPackageManager ();
60+ private void switchIconTo (MethodCall call ) {
61+ if (classNames == null || classNames .isEmpty ()) {
62+ Log .e (TAG ,"Initialization Failed!" );
63+ Log .i (TAG ,"List all the activity-alias class names in initialize()" );
64+ return ;
65+ }
5766
67+ List <String > args = call .arguments ();
68+ String className = args .get (0 );
5869
70+ PackageManager pm = activity .getPackageManager ();
5971 String packageName = activity .getPackageName ();
60- // Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(packageName);
61- // String mainActivityClass = launchIntent.getComponent().getClassName();
62-
63- ComponentName darkThemeCN = new ComponentName (packageName , packageName +"." +className );
64- ComponentName lightThemeCN = new ComponentName (packageName , packageName +"." +"LightTheme" );
65- ComponentName mainThemeCN = new ComponentName (packageName , packageName +"." +"MainActivity" );
66-
67-
68- pm .setComponentEnabledSetting (lightThemeCN ,
69- PackageManager .COMPONENT_ENABLED_STATE_DISABLED ,
70- PackageManager .DONT_KILL_APP );
71- pm .setComponentEnabledSetting (mainThemeCN ,
72- PackageManager .COMPONENT_ENABLED_STATE_DISABLED ,
73- PackageManager .DONT_KILL_APP );
74- pm .setComponentEnabledSetting (darkThemeCN ,
75- PackageManager .COMPONENT_ENABLED_STATE_ENABLED ,
76- PackageManager .DONT_KILL_APP );
72+ int componentState = PackageManager .COMPONENT_ENABLED_STATE_DISABLED ;
73+ int i =0 ;
74+ for (;i <classNames .size ();i ++) {
75+ ComponentName cn = new ComponentName (packageName , packageName +"." +classNames .get (i ));
76+ if (className .equals (classNames .get (i ))) {
77+ componentState = PackageManager .COMPONENT_ENABLED_STATE_ENABLED ;
78+ }
79+ pm .setComponentEnabledSetting (cn , componentState , PackageManager .DONT_KILL_APP );
80+ }
7781
78- Log .d (TAG ,"DONE" );
82+ if (i >classNames .size ()) {
83+ Log .e (TAG ,"class name " +className +" did not match in the initialized list." );
84+ return ;
85+ }
86+ Log .d (TAG ,"Icon switched to " +className );
7987 }
8088}
8189
0 commit comments