Как отправить идентификатор продукта или любой почтовый идентификатор с динамической ссылкой и как его получить? - PullRequest
0 голосов
/ 01 апреля 2019

Я использовал следующий код. Я могу получить 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>
...