эквивалентно webview.loadDataWithBaseURL() при запуске системного браузера?

Я показываю веб-страницу в своем приложении, используя веб-просмотр, но я хотел бы просто запустить браузер из своего приложения. Проблема в том, что я использую этот метод из класса WebView:

wv.loadDataWithBaseURL("http://somewebsite.com",responseQuery, "text/html", "utf-8", "");

с последующим:

setContentView(wv);

как мне запустить браузер из моего приложения, используя мой существующий код? Я не могу просто использовать стандартное намерение, потому что мне нужно прикрепить все эти другие аргументы, поскольку они необходимы (до этого я выполнял некоторые запросы POST, лол).

Любые ссылки на соответствующие ресурсы или примеры кода будут высоко оценены! Спасибо за ваше время.


person user2734823    schedule 23.03.2014    source источник


Ответы (1)


AFAIK то, чего вы пытаетесь достичь, невозможно. Любой приличный браузер должен запретить это из соображений безопасности. Это будет означать, что любое приложение может обмануть пользователя, заставив его думать, что произвольный HTML загружается в определенном домене. Это позволит злоумышленнику загрузить вредоносный HTML-код в домене доверенного веб-сайта (например, в банке пользователя).

Если вы просто хотите отобразить некоторый контент, вы можете рассмотреть возможность загрузки сайта в виде URL-адреса данных (data:text/html,) и установить базовый URL-адрес в заголовках контента (чтобы CSS и т. д. разрешались правильно). Это будет означать, что браузер будет отображать весь URL-адрес данных в адресной строке.

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

person marcin.kosiba    schedule 24.03.2014