Intereting Posts
После обновления Android Studio, показывающего ошибку Разрешить щелчок прямоугольником – андроид Android DownloadManager Progress Как использовать цветные образцы для Android Мое приложение не совместимо с Nexus 7 в Google Playstore Отображение общего доступа Android на других устройствах Передача массива целых чисел из AppWidget в существующий RemoteViewsService для визуализации с помощью RemoteViewsFactory Химическая формула на Android Различные варианты ориентации «Пейзаж» и «Пейзаж-обратная» RelativeLayout: выровнять представление с дочерним элементом группы просмотра братьев и сестер Android Navigation Ящик вертикальной границы Android: как получить список всех предпочтений xml для моего приложения и прочитать их? Recycliewiew Adapter и Glide – одинаковое изображение каждые 4-5 строк Как решить проблему «Нет активности для обработки Intent» Что может привести к тому, что приложение Android будет работать медленно на одном устройстве с тем, на котором он работает быстро?

Отказано, чтобы отобразить фрейм, потому что он установил X-Frame-Options в «DENY» в веб-обозревателе Android

Когда я пытаюсь показать календарь Google в webview, он показывает некоторую ошибку:

[INFO:CONSOLE(0)] "Refused to display 'https://accounts.google.com/ServiceLogin?service=cl&passive=1209600&continue=https://www.google.com/calendar/embed?src%3Detlwhk@gmail.com%26ctz%3DAsia/Hong_Kong&followup=https://www.google.com/calendar/embed?src%3Detlwhk@gmail.com%26ctz%3DAsia/Hong_Kong&btmpl=mobile&ltmpl=mobilex&scc=1' in a frame because it set 'X-Frame-Options' to 'DENY'.", source: about:blank (0) 

И это html-код

 <p><iframe style="border: 0;" src="https://www.google.com/calendar/embed?src=etlwhk%40gmail.com&amp;ctz=Asia/Hong_Kong&amp;output=embed" width="800" height="600" frameborder="0" scrolling="no"></iframe></p> 

И для стороны Android это простой код веб-просмотра

  StringBuilder sb = new StringBuilder(); sb.append("<HTML><HEAD><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'><style>img{display: inline; height: auto; max-width: 100%}iframe{width:100%}</style></HEAD><body>"); sb.append(page.page_content_chi.toString()); sb.append("</body></HTML>"); webview.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html", "utf-8", null); 

Как исправить ошибку? Спасибо за помощь.

Вам нужно сделать свой календарь открытым. Это то, что происходит. Поскольку календарь, который вы пытаетесь отобразить, не публикуется публично, Google Calendar сначала хочет узнать, кто вы, чтобы решить, что вам показать, поэтому он отправляет вас на страницу входа в Google , Страница входа защищает себя от захвата кликов, запрещая отображение себя в iframe (это означает, что для параметра 'X-Frame-Options' is set to 'DENY' ).

Если вы сделаете календарь общедоступным, календарь просто покажет его, не пытаясь сначала войти в систему. О том, как разделить календарь, см. Здесь: https://support.google.com/calendar/answer/37083

Вы можете тривиально протестировать на рабочем столе, будет ли это работать в WebView, создав простую тестовую страницу, в которую встроен календарь в iframe, а затем откроется в окне инкогнито Google Chrome, где вы не вошли в сервисы Google. Chrome также откажется показывать Календарь, пока вы не сделаете его общедоступным.