1515package com .examples .bundle .app ;
1616
1717import android .app .Activity ;
18+ import android .content .Intent ;
1819import android .os .Bundle ;
1920import android .view .Menu ;
2021import android .view .View ;
2122import android .widget .Button ;
2223import android .widget .TextView ;
2324
25+ import com .google .android .play .core .splitinstall .SplitInstallManager ;
26+ import com .google .android .play .core .splitinstall .SplitInstallManagerFactory ;
27+ import com .google .android .play .core .splitinstall .SplitInstallRequest ;
28+ import com .google .android .play .core .splitinstall .SplitInstallStateUpdatedListener ;
29+ import com .google .android .play .core .splitinstall .model .SplitInstallSessionStatus ;
30+
2431/**
2532 * The main activity of the Basic Sample App.
2633 */
2734public class BasicActivity extends Activity {
2835
36+ private static final String FEATURE_MODULE_NAME = "asset_feature" ;
37+ private static final String FEATURE_ACTIVITY_CLASS =
38+ "com.example.bundle.features.assets.FeatureActivity" ;
39+
40+ private SplitInstallManager splitInstallManager ;
41+ private TextView statusTextView ;
42+
43+ private final SplitInstallStateUpdatedListener listener = state -> {
44+ switch (state .status ()) {
45+ case SplitInstallSessionStatus .DOWNLOADING :
46+ statusTextView .setText ("Downloading feature module..." );
47+ break ;
48+ case SplitInstallSessionStatus .INSTALLING :
49+ statusTextView .setText ("Installing feature module..." );
50+ break ;
51+ case SplitInstallSessionStatus .INSTALLED :
52+ statusTextView .setText ("Feature module installed!" );
53+ launchFeatureActivity ();
54+ break ;
55+ case SplitInstallSessionStatus .FAILED :
56+ statusTextView .setText ("Installation failed: " + state .errorCode ());
57+ break ;
58+ case SplitInstallSessionStatus .CANCELED :
59+ statusTextView .setText ("Installation canceled" );
60+ break ;
61+ }
62+ };
63+
2964 @ Override
3065 protected void onCreate (Bundle savedInstanceState ) {
3166 super .onCreate (savedInstanceState );
3267 setContentView (R .layout .basic_activity );
3368
69+ splitInstallManager = SplitInstallManagerFactory .create (this );
70+ statusTextView = findViewById (R .id .text_hello );
71+
3472 final Button buttons [] = {
3573 findViewById (R .id .button_id_fizz ), findViewById (R .id .button_id_buzz ),
3674 };
@@ -48,6 +86,53 @@ public void onClick(View v) {
4886 }
4987 });
5088 }
89+
90+ Button loadFeatureButton = findViewById (R .id .button_load_feature );
91+ loadFeatureButton .setOnClickListener (v -> loadFeatureModule ());
92+ }
93+
94+ @ Override
95+ protected void onResume () {
96+ super .onResume ();
97+ splitInstallManager .registerListener (listener );
98+ }
99+
100+ @ Override
101+ protected void onPause () {
102+ super .onPause ();
103+ splitInstallManager .unregisterListener (listener );
104+ }
105+
106+ private void loadFeatureModule () {
107+ if (splitInstallManager .getInstalledModules ().contains (FEATURE_MODULE_NAME )) {
108+ statusTextView .setText ("Feature already installed!" );
109+ launchFeatureActivity ();
110+ return ;
111+ }
112+
113+ statusTextView .setText ("Requesting feature module..." );
114+
115+ SplitInstallRequest request = SplitInstallRequest .newBuilder ()
116+ .addModule (FEATURE_MODULE_NAME )
117+ .build ();
118+
119+ splitInstallManager .startInstall (request )
120+ .addOnSuccessListener (sessionId -> {
121+ statusTextView .setText ("Installation started (session " + sessionId + ")" );
122+ })
123+ .addOnFailureListener (e -> {
124+ statusTextView .setText ("Failed to start install: " + e .getMessage ());
125+ });
126+ }
127+
128+ private void launchFeatureActivity () {
129+ try {
130+ Intent intent = new Intent ();
131+ intent .setClassName (getPackageName (), FEATURE_ACTIVITY_CLASS );
132+ startActivity (intent );
133+ } catch (Exception e ) {
134+ statusTextView .setText ("Failed to launch: " + e .getMessage ());
135+ }
51136 }
52137
53138 @ Override
0 commit comments