Глубокая привязка Android к приложению

Я пытаюсь создать ссылку, которая может быть отправлена ​​по электронной почте, которая при открытии на устройстве Android с установленным моим приложением автоматически откроет правильную страницу в моем приложении.

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

Попытка 1: Использование пользовательской схемы: myapp: // someItem. Это работает, но некоторые приложения электронной почты не рассматривают это как ссылку, поскольку это не http. Есть ли способ заставить приложения рассматривать это как действительную ссылку? Gmail, например.

Попытка 2: Использование ссылки http с хостом: http: //com.myapp/someItem . Это работает, но мое приложение заканчивается зарегистрированным, чтобы обрабатывать все HTTP-ссылки, которые не являются идеальными.

Попытка 3: Использование ссылки http с хостом и портом: http: //com.myapp: 2345 / someItem . Это мое текущее решение с единственным недостатком, заключающимся в том, что при открытии ссылки он все же дает возможность открыть ссылку в браузере. Есть ли способ остановить браузер, который пытается открыть мои ссылки?

У кого-нибудь есть способ сделать ссылки, которые будут рассматриваться как ссылки для всех приложений, а также игнорировать браузер при их открытии?

Этот метод, по-видимому, работает на Android из того, что я могу сказать:

http://mobile.dzone.com/news/custom-url-schemes-phonegap

Я еще не пробовал это в реальном приложении для производства, поэтому ваш пробег может отличаться. То, что я сделал, это использование этой технологии создания скрытого iframe и попытки установить местоположение в пользовательскую схему URL-адреса и вызвать функцию из onload для документа. То, что я видел до сих пор (я только проверял его на устройствах 2.2 и 2.3), заключается в том, что если у меня установлено приложение, которое обрабатывает пользовательскую схему, приложение запустится, а если не будет отображаться страница.

Относительно чистый единственный URL-адрес, охватывающий оба случая, и не разрушает такие вещи, как щебетать в URL-адресе. Реальная производственная версия может содержать только скрытый iframe-зонд, если запрос исходит из того, что выглядит как платформа, которая может поддерживать приложение, чтобы снизить риск несовместимого поведения на рабочем столе.

Чтобы ответить на ваши вопросы, ниже показан образец фильтра намерений в манифесте.

<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="www.example.com" android:pathPrefix="/home" android:scheme="https"/> </intent-filter> 

Поэтому в основном, когда кто-то нажимает на любую ссылку, начиная с http://www.example.com/home , ему будет предоставлена ​​возможность открыть его вместе с приложением вместе с приложениями браузера. Вы должны обрабатывать намерение в своей деятельности

Также схема может быть любой, но http-схема рекомендуется Google, так что и ваше приложение, и приложение-браузер могут прослушивать клики на отключенном URL-адресе.

Примечание. Не забудьте добавить на свои веб-страницы имя android-app: // yourpackage name / http / http://www.example.com / home / …, если вы хотите связать приложение.

  1:-set Custom URL schemes like http://example.com. For example, the URL http://example.com/?id=95 , will open up the relevant FAQ and the URL http://example.com/?sectionid=8 (where sectionid is the publish id of any Section), will open up relevant section. 2:- <activity android:name="com.example.shilpi.deeplinkingsample.DeepLinkActivity"> <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="example.com"/> </intent-filter> </activity> 3:- @Override protected void onResume() { super.onResume(); Intent in = getIntent(); Uri data = in.getData(); System.out.println("deeplinkingcallback :- "+data); } 

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

Тем не менее, это не устраняет проблему открытия ссылок в браузере. Единственное истинное решение, о котором я могу думать, это обработчик ссылок, который перескакивает в соответствующее приложение. Тогда проблема позволит пользователю изменить предпочтительный браузер …