如何将动态 link 设置为 android 应用中的特定 activity
how to set dynamic link to a particular activity in android app
我正在实施购物 app.In,当产品被分享时它应该发送一个动态 link 这样当一个人点击它时,在应用程序中打开 only.Finally 我实现了这个feature.But 当我从共享动态打开应用程序时 link 我得到的是主页而不是产品 page.I 需要有关获取特定产品页面而不是打开购物主页的帮助。
我在这里包括代码。 AndroidManifest.xml
<activity android:name=".Postdetails">
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="MainActivity" />
<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="postdetailsnew.com" android:scheme="https"
android:pathPattern=".*"/>
</intent-filter>
</activity>
PostDetails.java这里的PostDetails页面是单品设计页面或者activity。这里我写了下面的代码。
sharebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
s="https://app_code.app.goo.gl/?link="+ProductLinkInBrowser+"&apn=com.example.maneesh.shop";
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, s);
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
}
FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
// Get deep link from result (may be null if no link is found)
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
FirebaseAppInvite invite=FirebaseAppInvite.getInvitation(pendingDynamicLinkData);
if(invite!=null){
String invitationId=invite.getInvitationId();
}
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w("Heyy", "getDynamicLink:onFailure", e);
}
});
所以这里终于用动态 link 打开了应用程序主页,而不是 shared.Please 指导我实现此目的的特定产品页面。
您需要解析动态 link 中的 URL,并触发 intent 以将用户引导至您应用的正确部分。通常,您会在主 activity 中设置动态链接侦听器,并将从那里路由到任何特定需求。
您代码中的 deepLink
变量将是您在动态 link 中传递的 URL,如 http://yourshop.com/product/12345
。你可以调用 deepLink.getPath()
,它会 return 你 product/12345,然后为此开火并意图,例如:
String path = deepLink.getPath();
String[] parts = path.split("/")
if (parts[0] == "product") {
Intent intent = new Intent(this, PostDetails.class);
intent.putExtra("productid", parts[1]);
startActivity(intent);
}
我正在实施购物 app.In,当产品被分享时它应该发送一个动态 link 这样当一个人点击它时,在应用程序中打开 only.Finally 我实现了这个feature.But 当我从共享动态打开应用程序时 link 我得到的是主页而不是产品 page.I 需要有关获取特定产品页面而不是打开购物主页的帮助。 我在这里包括代码。 AndroidManifest.xml
<activity android:name=".Postdetails">
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="MainActivity" />
<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="postdetailsnew.com" android:scheme="https"
android:pathPattern=".*"/>
</intent-filter>
</activity>
PostDetails.java这里的PostDetails页面是单品设计页面或者activity。这里我写了下面的代码。
sharebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
s="https://app_code.app.goo.gl/?link="+ProductLinkInBrowser+"&apn=com.example.maneesh.shop";
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, s);
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
}
FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
// Get deep link from result (may be null if no link is found)
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
FirebaseAppInvite invite=FirebaseAppInvite.getInvitation(pendingDynamicLinkData);
if(invite!=null){
String invitationId=invite.getInvitationId();
}
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w("Heyy", "getDynamicLink:onFailure", e);
}
});
所以这里终于用动态 link 打开了应用程序主页,而不是 shared.Please 指导我实现此目的的特定产品页面。
您需要解析动态 link 中的 URL,并触发 intent 以将用户引导至您应用的正确部分。通常,您会在主 activity 中设置动态链接侦听器,并将从那里路由到任何特定需求。
您代码中的 deepLink
变量将是您在动态 link 中传递的 URL,如 http://yourshop.com/product/12345
。你可以调用 deepLink.getPath()
,它会 return 你 product/12345,然后为此开火并意图,例如:
String path = deepLink.getPath();
String[] parts = path.split("/")
if (parts[0] == "product") {
Intent intent = new Intent(this, PostDetails.class);
intent.putExtra("productid", parts[1]);
startActivity(intent);
}