Как я могу предоставить пользователю простой способ возврата из сеанса WebKit в моем приложении для Android?

#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:// .