DeepLinks не открывает правильную активность - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 2 действия - MainActivity и DeepLinkActivity. MainActivity генерирует ссылку. Когда я нажимаю на DeepLink в SMS-сообщении, я ожидаю, что DeepLinkActivity откроется, однако MainActivity всегда открывается.

Файл манифеста выглядит следующим образом:

    <activity
        android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DeepLinkActivity"
        android:label="@string/app_name"
        android:theme="@style/ThemeOverlay.MyDialogActivity">

        <!-- [START deep_link_filter] -->
        <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="blessd.mobi" android:scheme="http"/>
            <data android:host="blessd.mobi" android:scheme="https"/>
        </intent-filter>
        <!-- [END deep_link_filter] -->
    </activity>

Фрагмент обоих видов деятельности

MainActivity

public class MainActivity extends AppCompatActivity  {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_referral);


        //long
        String link = "http://www.blessd.mobi";
        DynamicLink m = FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link))....

DeepLinkActivity

public class DeepLinkActivity extends AppCompatActivity implements
    View.OnClickListener {

    private static final String TAG = DeepLinkActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.deep_link_activity);
        Log.d(TAG,"Deep Activity" );

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

В вашей манифестной активности у вас должен быть фильтр:

<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="yourlinkhost.com"
                    android:scheme="http" />
                <data
                    android:host="yourlinkhost.com"
                    android:scheme="https" />

            </intent-filter>

И он должен обрабатывать ваши ссылки. Maby ваши ссылки имеют неправильную схему хоста - у меня была такая проблема, когда моя ссылка имела неправильный хост. Но решение, которое у вас есть - кажется хорошим, и то же самое я хорошо сработал для меня.

0 голосов
/ 06 сентября 2018

Вы должны добавить дополнительные данные в ваши фильтры намерений.

           <data
            android:host=""
            android:path=""
            android:scheme="" />

И вы должны были установить эти данные при создании общего ресурса.

builder.scheme(getString(R.string.config_scheme)) // "http"
            .authority("your url") // your host
            .appendPath(getString(R.string.path)) // "your path"
            .appendQueryParameter(QUERY_PARAM, data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...