Встроить Instagram в Android WebView

У меня есть приложение для Android с WebView, в котором я показываю контент, включающий встроенные твиты и встроенные фотографии Instagram.

В обоих случаях я копирую цитату, как указано в документации, и показываю так:

    String html = "<!DOCTYPE HTML><html><head><style>a {color:#333333;}</style></head><body>"+content.substring(0, blockquoteEnd)+"<script async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"></script></body></html>";
    WebView tText = new WebView(getActivity());
    tText.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");
    WebSettings webSettings = tText.getSettings();
    webSettings.setJavaScriptEnabled(true);
    textWrapper.addView(tText);

Мои твиты отображались только в виде обычного текста, но я исправил это с помощью этой строки:

tText.loadDataWithBaseURL("https://twitter.com", html, "text/html", "UTF-8", "");

Я попытался сделать то же самое с фотографиями в Instagram, сделав это:

tText.loadDataWithBaseURL("https://instagram.com", html, "text/html", "UTF-8", "");

но это не работает, все фотографии в инстаграме показывают только описание в виде простого текста.

Я не могу найти документацию (официальную или нет) о том, как встроить Instagram в Android WebViews. Кто-нибудь знает, как это исправить?


person Wonton    schedule 01.04.2015    source источник
comment
Вы устранили какую проблему? Я вставляю HTML-код instagram в свой WebView, но вместо реальных изображений вижу логотип instagram.   -  person IlyaEremin    schedule 31.03.2016
comment
Нет, извините, я не смог найти это решение.   -  person Wonton    schedule 31.03.2016
comment
Я только что попытался установить для baseUrl значение https://instagram.com, и блоки начали загружать изображения, но неправильно изменяют размер (изображения перекрываются или обрезаются).   -  person IlyaEremin    schedule 31.03.2016
comment
У кого-нибудь есть решение для этого?   -  person Singed    schedule 04.03.2020


Ответы (3)


Попробовав множество комбинаций и сославшись на другие ответы здесь, это сработало для меня:

WebView webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadDataWithBaseURL("https://instagram.com", myHtmlString, "text/html", "UTF-8", "");
person Eric B.    schedule 07.08.2018
comment
Я пытался загрузить цитату в веб-просмотр, и метод loadDataWithBaseURL() у меня тоже работает. - person Andy; 25.11.2020
comment
Спасибо, это сработало для меня. - person thesamoanppprogrammer; 19.03.2021

Вы пробовали использовать эту ссылку? https://instagram.com/developer/embedding/

Я не уверен, какой у вас параметр «html», когда вы пытаетесь встроить Instagram, но если у вас есть ссылка на элемент, который вы хотите встроить, вы можете отправить запрос на http://api.instagram.com/oembed с URL-адресом элемента и получить соответствующую информацию (см. нижнюю часть ссылки «Встраивание для Разработчики"); как только вы получите ответ, вы сможете получить часть «html» из объекта JSON и передать ее в loadDataWithBaseURL в качестве второго параметра.

Кроме того, я пытался встроить видео из Instagram и Facebook в свое приложение для Android, но не смог, так как вызывал loadDataWithBaseURL с нулевым значением в качестве первого параметра вместо URL-адреса Instagram/FB. Ранее сегодня я видел ваши вопросы и заметил, что ваш первый параметр отличается от моего, поэтому я изменил его, и тогда все было в порядке. Так что спасибо за это :-)

person Mor    schedule 05.04.2015
comment
Возможно, сейчас есть более конкретное руководство для мобильных устройств, но когда я опубликовал свой ответ, это был единственный способ встроить Instagram в свое мобильное приложение — с помощью WebView, поэтому веб-учебник был полезен, или, по крайней мере, для меня в было .. - person Mor; 26.06.2016

У меня такая же проблема. Здесь метод loadDataWithBaseURL(), в первом параметре требуется baseUrl. Я гуглил о baseUrl, где-то я нашел предложения, например, оставить только null, "", или Fake://. Но моя проблема не была решена, но после этого я указал baseUrl своего веб-сайта, на который был вставлен редирект Instagram, и решил свою проблему. А также решена проблема с воспроизведением видео в Твиттере.

пройти через https://developer.android.com/reference/android/webkit/WebView.html в разделе loadData здесь вы получите представление.

person vishal    schedule 22.06.2017