Я использовал следующий код. Я могу получить id1, т.е. 8721808086, но не могу отправить более одного идентификатора, скажем, id2 и т. Д. Как я могу это сделать? Как отправить и получить более одного параметра в динамической ссылке в базе данных. Также Когда я нажимаю на ссылку, когда он впервые открывает веб-браузер, чем приложение автоматически. Является ли поведение динамической ссылки удовлетворительным? Или приложение должно отображаться в диалоговом окне выбора приложения.
public class DynamicLinkActivity extends AppCompatActivity {
private static final String DEEP_LINK_URL = "https://testapp.com/user?id1=8721808086";
private TextView receivedLinkView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dynamic_link);
final TextView linkViewSend = findViewById(R.id.linkViewSend);
Button shareBtn = findViewById(R.id.buttonShare);
receivedLinkView = findViewById(R.id.linkViewReceive);
// Share button click listener
shareBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Task<ShortDynamicLink> shortDynamicLinkTask = buildDeepLink(DEEP_LINK_URL, 0);
shortDynamicLinkTask.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if(task.isSuccessful()){
Uri uri = task.getResult().getShortLink();
linkViewSend.setText(uri.toString());
shareDeepLink(uri.toString());
}else {
Log.i("LinkFail", task.getException().getMessage());
Toast.makeText(DynamicLinkActivity.this, "Can't create link", Toast.LENGTH_SHORT).show();
}
}
});
}
});
FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
}
if (deepLink != null) {
Snackbar.make(findViewById(android.R.id.content), deepLink.toString(), Snackbar.LENGTH_LONG).show();
receivedLinkView.setText(deepLink.toString());
receivedLinkView.setText(deepLink.getQueryParameter("id1"));
Toast.makeText(DynamicLinkActivity.this, deepLink.getQueryParameter("name"), Toast.LENGTH_LONG).show();
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(DynamicLinkActivity.this, "Can't find link", Toast.LENGTH_SHORT).show();
}
});
}
/*-----------------------------------------------------------------------------*/
public Task<ShortDynamicLink> buildDeepLink(String deepLink, int minVersion) {
String uriPrefix = getString(R.string.dynamic_links_uri_prefix);
return FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(deepLink))
.setDomainUriPrefix(uriPrefix)
.setNavigationInfoParameters(new DynamicLink.NavigationInfoParameters.Builder()
.build())
.setAndroidParameters(new DynamicLink.AndroidParameters.Builder()
.setMinimumVersion(minVersion)
.build())
.buildShortDynamicLink();
}
/*-----------------------------------------------------------------------------*/
private void shareDeepLink(String deepLink) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,deepLink);
startActivity(intent);
}
/*-----------------------------------------------------------------------------*/
}
Фильтр намерений для действия выглядит следующим образом
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="https"
android:host="testapp.com"
android:pathPattern="/user"/>
</intent-filter>
</activity>