【问题标题】:how to set dynamic link to a particular activity in android app如何在android应用程序中设置指向特定活动的动态链接
【发布时间】:2017-09-15 19:06:32
【问题描述】:

我正在实现一个购物应用程序。在共享产品时,它应该发送一个动态链接,这样当一个人点击它时,只能在应用程序中打开。最后我实现了这个功能。但是当我从一个共享动态链接我正在获取主页而不是产品页面。我需要有关获取特定产品页面而不是打开购物主页的帮助。 我在这里包括代码。 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 页面是单个产品设计页面或活动。在此我编写了以下代码。

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);
                }
            });

所以这里最终应用程序主页打开了动态链接,而不是共享的特定产品页面。请指导我实现这一点。

【问题讨论】:

    标签: android firebase firebase-dynamic-links firebase-app-indexing


    【解决方案1】:

    您需要解析动态链接中的 URL,并触发意图将用户引导至应用的正确部分。通常,您会在主要活动中设置动态链接侦听器,并从那里路由到任何特定需求。

    代码中的deepLink 变量将是您在动态链接中传递的URL,例如http://yourshop.com/product/12345。你可以打电话给deepLink.getPath(),它会返回你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);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多