Можно ли добавить дополнения в просматриваемые намерения из HTML

Давайте возьмем, скажем, следующий манифест:

<intent-filter>
    <data scheme="myscheme"
          host="myhost">
    </data>
    <action name="android.intent.action.VIEW">
    </action>
    <category name="android.intent.category.DEFAULT">
    </category>
    <category name="android.intent.category.BROWSABLE">
    </category>
</intent-filter>

Я мог бы запустить действие, которое в соответствии с вышеупомянутым фильтром намерений объявлено путем перенаправления браузера на:

myscheme://myhost?param1=param1&param2=param2

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

myextra = getIntent().getStringExtra('myextra')

Любая помощь будет очень высоко ценится.

3 ответа

Решение

Можно использовать "URL-адрес схемы намерений", чтобы отправлять больше информации, например, дополнительные объекты и действия, при перенаправлении на URL-адрес настраиваемой схемы намерений через JavaScript или HTML.

intent://foobar/#Intent;action=myaction1;type=text/plain;S.xyz=123;end

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

Смотрите более подробную информацию в следующем отчете:

http://www.mbsd.jp/Whitepaper/IntentScheme.pdf

Или используйте документацию Chrome:

https://developer.chrome.com/multidevice/android/intents

Вот как я преодолеваю эту проблему,

Я разработал свой собственный браузер и сделал его доступным для просмотра, как и вы

Uri data = getIntent().getData();

if(data == null) { // Opened with app icon click (without link redirect)
    Toast.makeText(this, "data is null", Toast.LENGTH_LONG).show();
}
else { // Opened when a link clicked (with browsable)
    Toast.makeText(this, "data is not null", Toast.LENGTH_LONG).show();
    String scheme = data.getScheme(); // "http"
    String host = data.getHost(); // "twitter.com"
    String link = getActualUrl(host);
    webView.loadUrl(link);
    Toast.makeText(this,"scheme is : "+scheme+" and host is : "+host+ " ",Toast.LENGTH_LONG).show();
}

Я думаю, что вы ищете эту функцию

data.getQueryParameter(String key);

Единственный способ передать данные непосредственно с веб-страницы в ваше приложение - это URL, который вы зарегистрировали в intent-filter, Все для извлечения через Uri объект - находятся ли данные по пути или с параметрами запроса, как описано ниже. Там нет никакого способа, чтобы установить дополнения на Intent с веб-страницы.

Uri uri = getIntent().getData();
String param1Value = uri.getQueryParameter("param1");
Другие вопросы по тегам