21
21
import android .os .Bundle ;
22
22
import androidx .annotation .NonNull ;
23
23
import androidx .annotation .VisibleForTesting ;
24
+ import com .google .android .gms .tasks .OnCompleteListener ;
25
+ import com .google .android .gms .tasks .Task ;
24
26
import com .google .android .material .snackbar .Snackbar ;
25
27
import androidx .appcompat .app .AlertDialog ;
26
28
import androidx .appcompat .app .AppCompatActivity ;
31
33
import com .google .android .gms .tasks .OnFailureListener ;
32
34
import com .google .android .gms .tasks .OnSuccessListener ;
33
35
import com .google .firebase .dynamiclinks .DynamicLink ;
36
+ import com .google .firebase .dynamiclinks .DynamicLink .AndroidParameters ;
34
37
import com .google .firebase .dynamiclinks .FirebaseDynamicLinks ;
35
38
import com .google .firebase .dynamiclinks .PendingDynamicLinkData ;
39
+ import com .google .firebase .dynamiclinks .ShortDynamicLink ;
36
40
import com .google .firebase .quickstart .deeplinks .R ;
37
41
import com .google .firebase .quickstart .deeplinks .databinding .ActivityMainBinding ;
38
42
@@ -59,13 +63,25 @@ protected void onCreate(Bundle savedInstanceState) {
59
63
final Uri deepLink = buildDeepLink (Uri .parse (DEEP_LINK_URL ), 0 );
60
64
linkSendTextView .setText (deepLink .toString ());
61
65
66
+ // create a short link and display it in the UI
67
+ buildShortLinkFromParams (Uri .parse (DEEP_LINK_URL ), 0 );
68
+
62
69
// Share button click listener
63
70
binding .buttonShare .setOnClickListener (new View .OnClickListener () {
64
71
@ Override
65
72
public void onClick (View v ) {
66
73
shareDeepLink (deepLink .toString ());
67
74
}
68
75
});
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
+ });
69
85
// [END_EXCLUDE]
70
86
71
87
// [START get_deep_link]
@@ -165,4 +181,39 @@ private void validateAppCode() {
165
181
.create ().show ();
166
182
}
167
183
}
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
+ }
168
219
}
0 commit comments