Можно ли добавить дополнения в просматриваемые намерения из 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¶m2=param2
Тем не менее, я борюсь с пониманием, возможно ли сделать то же перенаправление, только с дополнительными дополнениями, которые будут получены программно с:
myextra = getIntent().getStringExtra('myextra')
Любая помощь будет очень высоко ценится.
3 ответа
Можно использовать "URL-адрес схемы намерений", чтобы отправлять больше информации, например, дополнительные объекты и действия, при перенаправлении на URL-адрес настраиваемой схемы намерений через JavaScript или HTML.
intent://foobar/#Intent;action=myaction1;type=text/plain;S.xyz=123;end
Хотя этот метод на самом деле не отвечает на вопрос, так как часть схемы всегда предназначена для "намерения", это возможный способ отправки намерений из браузеров с дополнительным объектом или действиями.
Смотрите более подробную информацию в следующем отчете:
Или используйте документацию Chrome:
Вот как я преодолеваю эту проблему,
Я разработал свой собственный браузер и сделал его доступным для просмотра, как и вы
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");