【问题标题】:Deep link not opening specified Activity but opens other Activity深层链接未打开指定活动但打开其他活动
【发布时间】:2020-01-06 12:05:09
【问题描述】:

我以编程方式创建了一个DynamicLink,其中包括子域语法、一些标题和预览图像。我还指定了IntentFilter,单击它应该会打开该活动。但是当点击链接时,它会打开另一个也有深层链接的活动。 page.link 域由谷歌自己在 Firebase 控制台中提供 创建动态链接的代码是

 String e="https://learnandroid.page.link/?link=https://learn.android/&apn=com.learnandro&amv=16&st=Please view the ContentEvent&si="+some Image Url+"&afl=https://play.google.com/store/apps/details?id=app Package name";

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance()
                        .createDynamicLink()
                        .setLongLink(Uri.parse(e))
                        .buildShortDynamicLink()
                        .addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
                            @Override
                            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                                Uri get=task.getResult().getShortLink();
                                Intent sh=new Intent(Intent.ACTION_SEND);
                                sh.setType("text/plain");
                                sh.putExtra(Intent.EXTRA_TEXT,"Vi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ew the Amazing Event   "+get);
                                startActivity(Intent.createChooser(sh,"View"));
                            }
                        });  

Activity 的 Intent 过滤器为

<activity android:name=".content.Home"
            android:launchMode="singleTask"
            android:screenOrientation="portrait">
            <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="learn.android"
                    android:scheme="https" />
            </intent-filter>
        </activity>  

但是当点击生成的链接时,它会打开另一个活动。

【问题讨论】:

    标签: android firebase intentfilter firebase-dynamic-links


    【解决方案1】:

    如果您在多个活动中有深层链接,那么您应该使用android:pathPattern 来区分它们。

    这里是示例代码

    <data
        android:host="learn.android"
        android:pathPattern="/home"
        android:scheme="https" />
    

    并将/home 添加到您的链接

    String e="https://learnandroid.page.link/?link=https://learn.android/home/&apn=com.learnandro&amv=16&st=Please view the ContentEvent&si="+some Image Url+"&afl=https://play.google.com/store/apps/details?id=app Package name";
    

    【讨论】:

      【解决方案2】:

      你可以试试下面的 sn-p :

           val data: Uri? = intent?.data
           if (Uri.EMPTY != data) 
           {
              val id = intent.data?.getQueryParameter("ID")    
              intent = Intent(this, ActivityName::class.java)    
              startActivity(intent)  
              finish()
           }
      
      • 在getQueryParameter中,您需要传递包含URL中数据的KEY名称
      • 在Manifest文件中定义的Activity中定义这组代码

      【讨论】:

        猜你喜欢
        • 2016-01-25
        • 2021-06-08
        • 1970-01-01
        • 2015-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多