Глубокая ссылка не открывает указанное действие, но открывает другое действие - PullRequest
0 голосов
/ 06 января 2020

Я создал DynamicLink программно, который включает синтаксис поддомена, некоторые заголовок и изображение для предварительного просмотра. Я также указал IntentFilter, который должен открывать это действие при нажатии. Но когда ссылка нажата, она открывает другое действие, которое также имеет ссылку Deep. Домен page.link предоставляется самим Google в консоли Firebase. Код для создания Dynami c Ссылка

 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 задан как

<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>  

Но когда по сгенерированной ссылке открывается какая-то другая активность.

Ответы [ 2 ]

1 голос
/ 06 января 2020

Если у вас есть глубокая ссылка в нескольких действиях, вы должны использовать 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";
0 голосов
/ 06 января 2020

Вы можете попробовать следующий фрагмент:

     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 вам нужно передать имя KEY, содержащее данные в URL
  • Определите этот набор кода в Activity, который определено в файле манифеста
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...