Подтвердить что ты не робот

Android Deep Linking проблема! Как использовать схему пользовательского URL-адреса myapp://some_data

Я пробовал link1, link2, link3, link4, link5, link6

Здесь все описано о DeepLinking

То, что я хочу, это настраиваемый uri myapp://some_data, открывает собственное приложение, установленное на устройстве, для которого требуется инициализировать приложение some_data.

Есть два сценария, в которых можно щелкнуть пользовательский URL.

1) из приложения SMS, когда пользователь забирает ссылку, он должен автоматически открывать установленный в противном случае открытый магазин googleplay, где размещено приложение

2) изнутри сообщения электронной почты.

Я пробовал все перечисленные выше ссылки, но никто из них не работает для меня. У меня большая проблема со схемой.

Здесь мой AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="MainActivity"
        android:label="@string/app_name"
         android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

            <data android:scheme="inderbagga" />
        </intent-filter>
    </activity>
</application>

и здесь MainActivity.java

TextView tvText=(TextView)findViewById(R.id.tvid);

    if (getIntent().getAction() == Intent.ACTION_VIEW&&getIntent().getScheme().equals("inderbagga")) {
        Toast.makeText(getApplicationContext(), ""+getIntent().getScheme(), Toast.LENGTH_SHORT).show();
        Uri uri = getIntent().getData();
        // do stuff with uri
        tvText.setText(uri.toString());
    }
    else tvText.setText("NULL");

Чтобы быть более конкретным, я хочу открыть собственное приложение, когда u url типа inderbagga://нажата кнопка a1b22c333, либо из приложения sms-приложения, либо из почтового сообщения gmail/yahoomail.

чтобы достичь того же, я использовал фильтры намерения для установки схемы. и getIntent() для чтения данных, равных a1b22c333 в MainActivity.

4b9b3361

Ответ 1

ссылка на ссылку означает, что этот код будет работать

          <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:scheme="http"
      android:host="domain.com(google.com)"android:pathPrefix="/wp/poc1/(sufexes)" />

    </intent-filter>

получить данные URL-адреса

        //get uri data
     Uri data = getIntent().getData();
     //get schma
     String scheme = data.getScheme(); // "http"
     //get server name
     String host = data.getHost(); // Ipaddress or domain name
    //get parameter
     String urltextboxname=data.getQueryParameter("name");
     //set value in textview
     name.setText(urltextboxname);

Ответ 2

Чтобы быть более конкретным, я хочу открыть собственное приложение, когда u url типа inderbagga://нажата кнопка a1b22c333, либо из приложения sms-приложения, либо из почтового сообщения gmail/yahoomail.

Для Android доступно множество приложений для SMS и электронной почты. Точно никто из них не знает, как конвертировать inderbagga://a1b22c333 в интерактивные записи. Вы можете составить список всех этих приложений, связаться с каждой из их групп разработчиков и попросить их добавить его.

Или вы могли бы использовать свое приложение для определенного URL http://. Хотя пользователю будет предоставлен выборщик, чтобы просмотреть этот URL-адрес в вашем приложении или в веб-браузере, по крайней мере, он будет доступен для просмотра.

Ответ 3

Вы также можете попробовать эту библиотеку, которая облегчает объявление глубоких ссылок и извлечение необходимых параметров:

https://github.com/airbnb/DeepLinkDispatch

Он позволяет вам объявлять интересующий вас URI и параметр, который вы хотите извлечь из аннотаций, без необходимости выполнять синтаксический анализ.

Ответ 4

Похоже, проблема, с которой вы столкнулись, заключается в том, что ваш клиент электронной почты и SMS не разбирает схему и путь URI правильно. Большинство из них не позволяют вам напрямую вводить схему URI. Кроме того, если приложение не установлено, вам необходимо вернуться в Play Store, чтобы пользователь получил хороший опыт.

Для этого вам нужно вызвать схему URI на стороне клиента JS. Вы можете настроить простой веб-узел и использовать этот script:

<script type="text/javascript">
    window.onload = function() {
        var method = 'iframe';
        var fallbackFunction = function() {
            if (method == 'iframe') {
                window.location = "market://details?id=your.package.name";
            }
        };
        var addIFrame = function() {
            var iframe = document.createElement("iframe");
            iframe.style.border = "none";
            iframe.style.width = "1px";
            iframe.style.height = "1px";
            iframe.src = "inderbagga://a1b22c333";
            document.body.appendChild(iframe);
        };
        var loadChromeIntent = function() {
            method = 'intent';
            document.location = "intent://a1b22c333#Intent;scheme= inderbagga;package=your.package.name;end";
        };
        if (navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match("Version/")) {
            loadChromeIntent();
        }
        else if (navigator.userAgent.match(/Firefox/)) {
            window.location = "inderbagga://a1b22c333";
        }
        else {
            addIFrame();
        }
        setTimeout(fallbackFunction, 750);
    };
</script>

Или вы можете использовать сервис, например branch.io, который автоматически собирает JS на стороне клиента для вас в дополнение к работе на рабочем столе и iOS также.