#android #session #webkit #back #intentfilter
#Android #сеанс #webkit #Назад #intentfilter
Вопрос:
Моему приложению для Android необходимо переключаться между клиентским кодом и сеансами WebKit. Во время определенных операций я перенаправляю пользователя на разные веб-сайты, которые я загружаю через WebKit. Я хочу предоставить пользователю простой способ покинуть сеанс WebKit и вернуться к моему приложению, чтобы выполнить другую операцию или изменить последнюю. Я не хочу полагаться на кнопку возврата браузера, потому что это может быть бременем для пользователя, если они выполнили какую-либо значительную навигацию по страницам на веб-сайте и должны вернуться из сеанса в мое приложение.
Я хотел бы разместить кнопку или ссылку где-нибудь, где пользователь мог бы щелкнуть, когда захочет вернуться в мое приложение. Обратите внимание, я не спрашиваю, могу ли я вводить элементы в сеанс WebKit, потому что я почти уверен, что WebKit этого не позволит.
Есть идеи? Кроме того, приветствуются любые советы по сохранению информации о состоянии между запусками WebKit. Я знаю о параметре пакета Activity constructor, но если есть какие-либо тонкие нюансы, на которые мне нужно обратить внимание, просто дайте мне знать.
— roschler
Ответ №1:
(Когда вы говорите «WebKit», я предполагаю, что вы имеете в виду системный браузер по умолчанию, а не встраиваемый класс WebView.)
Это можно сделать с помощью пользовательских схем URL. Примером пользовательской схемы URL является:
myapp: //somedata:someotherdata
вы можете зарегистрировать свое приложение для вызова по этой схеме:
<activity ....>
<intent-filter>
<data android:scheme="myapp"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
Затем в вашем браузере просто укажите, myapp://
как вы бы делали с любым другим http://
URL (через кнопку, ссылку, javascript ..). Вы также можете добавить некоторые данные после scheme, например, myapp://some:data
и вы можете восстановить их в своем приложении через getIntent().getData()
.
Примечание: пользовательские схемы являются глобальными — убедитесь, что вы не сталкиваетесь с каким-либо другим приложением. Лучше всего использовать полное название пакета com.mypackage.myapp://
.