2121import android .os .Bundle ;
2222import androidx .annotation .NonNull ;
2323import androidx .annotation .VisibleForTesting ;
24+ import com .google .android .gms .tasks .OnCompleteListener ;
25+ import com .google .android .gms .tasks .Task ;
2426import com .google .android .material .snackbar .Snackbar ;
2527import androidx .appcompat .app .AlertDialog ;
2628import androidx .appcompat .app .AppCompatActivity ;
3133import com .google .android .gms .tasks .OnFailureListener ;
3234import com .google .android .gms .tasks .OnSuccessListener ;
3335import com .google .firebase .dynamiclinks .DynamicLink ;
36+ import com .google .firebase .dynamiclinks .DynamicLink .AndroidParameters ;
3437import com .google .firebase .dynamiclinks .FirebaseDynamicLinks ;
3538import com .google .firebase .dynamiclinks .PendingDynamicLinkData ;
39+ import com .google .firebase .dynamiclinks .ShortDynamicLink ;
3640import com .google .firebase .quickstart .deeplinks .R ;
3741import com .google .firebase .quickstart .deeplinks .databinding .ActivityMainBinding ;
3842
@@ -59,13 +63,25 @@ protected void onCreate(Bundle savedInstanceState) {
5963 final Uri deepLink = buildDeepLink (Uri .parse (DEEP_LINK_URL ), 0 );
6064 linkSendTextView .setText (deepLink .toString ());
6165
66+ // create a short link and display it in the UI
67+ buildShortLinkFromParams (Uri .parse (DEEP_LINK_URL ), 0 );
68+
6269 // Share button click listener
6370 binding .buttonShare .setOnClickListener (new View .OnClickListener () {
6471 @ Override
6572 public void onClick (View v ) {
6673 shareDeepLink (deepLink .toString ());
6774 }
6875 });
76+
77+ binding .buttonShareShortLink .setOnClickListener (new View .OnClickListener () {
78+ @ Override
79+ public void onClick (View v ) {
80+ TextView shortLinkTextView = findViewById (R .id .shortLinkViewSend );
81+ String shortDynamicLink = shortLinkTextView .getText ().toString ();
82+ shareDeepLink (shortDynamicLink );
83+ }
84+ });
6985 // [END_EXCLUDE]
7086
7187 // [START get_deep_link]
@@ -165,4 +181,39 @@ private void validateAppCode() {
165181 .create ().show ();
166182 }
167183 }
184+
185+ @ VisibleForTesting
186+ public void buildShortLinkFromParams (@ NonNull Uri deepLink , int minVersion ) {
187+ String uriPrefix = getString (R .string .dynamic_links_uri_prefix );
188+
189+ // Set dynamic link parameters:
190+ // * URI prefix (required)
191+ // * Android Parameters (required)
192+ // * Deep link
193+ FirebaseDynamicLinks .getInstance ()
194+ .createDynamicLink ()
195+ .setDomainUriPrefix (uriPrefix )
196+ .setAndroidParameters (
197+ new AndroidParameters .Builder ()
198+ .setMinimumVersion (minVersion )
199+ .build ()
200+ )
201+ .setLink (deepLink )
202+ .buildShortDynamicLink ()
203+ .addOnCompleteListener (this , new OnCompleteListener <ShortDynamicLink >() {
204+ @ Override
205+ public void onComplete (@ NonNull Task <ShortDynamicLink > task ) {
206+ if (task .isSuccessful ()) {
207+ // Short link created
208+ Uri shortDynamicLink = task .getResult ().getShortLink ();
209+ TextView shortLinkTextView = findViewById (R .id .shortLinkViewSend );
210+ shortLinkTextView .setText (shortDynamicLink .toString ());
211+ } else {
212+ // Error
213+ Log .e (TAG , task .getException ().getMessage ());
214+ throw new Error (task .getException ().getMessage ());
215+ }
216+ }
217+ });
218+ }
168219}
0 commit comments