Я разрабатываю динамическую ссылку, чтобы поделиться контентом страницы, чтобы открыть ее непосредственно в том же приложении с другого устройства.Когда я создаю общий ресурс динамической ссылки, я добавляю параметр запроса 'hotelId', но когда я нажимаю общую ссылку и пытаюсь открыть ссылку, приложение открывается нормально, но deepLink.getQueryParameter ("hotelId") всегда возвращает ноль.Вот мой код:
Genarate динамическая ссылка (DetailActivity)
onCreate(){
...
DynamicLink dynamicLink =
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse("www.example.com"))
.setDynamicLinkDomain("example.page.link/hotelDetail?hotelId="+hotelId)
// Open links with this app on Android
.setAndroidParameters(new
DynamicLink.AndroidParameters.Builder().build())
// Open links with com.example.ios on iOS
.setIosParameters(new
DynamicLink.IosParameters.Builder("com.example.exampleDark").build())
.buildDynamicLink();
Uri dynamicLinkUri = dynamicLink.getUri();
Log.e("DynamicLink -",dynamicLinkUri.toString());
//Share Dynamic Link
try {
URL url = new URL(URLDecoder.decode(myDynamicLink.toString(), "UTF-8"));
Log.i("Share Link", "URL = :"+url.toString());
// [START ddl_share_link]
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Firebase Deep Link");
//String msg = "Hey, check this out: \n" + link;
sendIntent.putExtra(Intent.EXTRA_TEXT, url.toString());
startActivity(sendIntent);
// [END ddl_share_link]
} catch (Exception e) {
e.printStackTrace();
Log.i(TAG, "Could not decode Uri: " + e.getLocalizedMessage());
}
...
}
Обновление manifest.xml для получения динамической ссылки
<activity
android:name=".DetailActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- [START link_intent_filter] -->
<!-- handle website links -->
<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:host="example.page.link" android:scheme="http"/>
<data android:host="example.page.link" android:scheme="https"/>
</intent-filter>
<!-- [END link_intent_filter] -->
</activity>
Чтобы получить динамическую ссылку из общего URL-адреса(DetailActivity)
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new
OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
String path = deepLink.getPath();
//if(path.equals("/hotelDetail")){
String hId = deepLink.getQueryParameter("hotelId");
Log.i("Get Parameters", " Hotel = :" + hId + " Offer = :");
} else {
Log.i("Get Parameters", "No Hotel Link");
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i("Get Parameters", "getDynamicLink:onFailure", e);
}
});
Значения, определенные на моей консоли Firebase
URL Link - https://example.page.link/hotelDetail
Dynamic Link - https://example.page.link/hotelDetail?hotelId
После того, как я поделился контентом, я получаю ссылку ниже как динамическую ссылку (Общая ссылка)
https://example.page.link/hotelDetail?hotelId=6q7a99a78d7fb63f330g2w6d?apn=myapp.com.myapp&ibi=com.example.exampleDark&link=www.example.com
Что я хочу, так это то, что когда я нажимаю общую ссылку, я хочу получить значение hotelId для DetailActivity из общей ссылки.
Кто-нибудь может мне помочь, если мне не хватает?Заранее спасибо