Как просто отобразить календарь Google, встроенный в приложение android? - PullRequest
0 голосов
/ 08 февраля 2020

Мы хотим, чтобы наше приложение отображало события только из общего календаря Google внутри веб-просмотра - у нас нет желания разрешать пользователям добавлять события или редактировать что-либо существующее. Мы просто хотим, чтобы они могли прокручивать и видеть, что уже есть в календаре, не выходя из приложения.

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

Макет настолько прост, насколько это возможно :

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPastelYellow"
    tools:context=".Practice">

    <WebView
        android:id="@+id/calendarwebview"
        android:layout_width="409dp"
        android:layout_height="402dp"
        android:layout_marginTop="1dp"
        android:layout_marginEnd="1dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Вот практика. java класс, который у нас пока есть - обратите внимание, что большинство URL закомментированы с отмеченными результатами. Последний почти работает, но все еще переходит к полноэкранному режиму.

public class Practice extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_practice);

        WebView myWebView = (WebView) findViewById(R.id.calendarwebview);

        // Try to turn off javascript, thinking that might be what causes full-screen - no change:
        //myWebView.getSettings().setJavaScriptEnabled(false);

        // Argh: just try some other website to see if *all* URLs jump into full screen:
        // (answer - nope, this one displays fine, right in the webview we want the calendar in)
        // myWebView.loadUrl("https://www.sightreadingfactory.com");

        // Try to use the secret address in iCal format (doesn't work at all):
        // myWebView.loadUrl("https://calendar.google.com/calendar/ical/<the private embed link>");

        // Try to use the URL from "get shareable link" button:
        // (this still goes fullscreen, but is also a less-desireable format)
        // myWebView.loadUrl("https://calendar.google.com/calendar/ical/<the shareable link>");


        // Try to use a stupid cut/paste of the URL visible in a browser on PC:
        // (this is the closest yet - it displays fine, but something still forces full screen):
        myWebView.loadUrl("https://calendar.google.com/calendar/embed?src=<url from web access>");


    }

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

И последнее замечание, касающееся области применения этого приложения: я действительно использую его как способ научить моего 11-летнего ребенка Дочка немного кодирует - это было действительно полезно в том, что почти все, что мы можем выяснить, прибегая к помощи, и она может сразу увидеть результаты изменений в эмуляторе в студии. Так что простота - это ключ!

Мне так и не удалось легко отделить пшеницу от плевел, потому что многие результаты поиска говорят о том, что конечные пользователи пытаются определить календари Google на android и не имеют ничего общего с кодированием. новое приложение android, и большинство из тех, кто делает говорит о кодировании, обычно обсуждают отображение указателя даты или просто простой виджет календаря, а не "отображают мой указанный c календарь Google с событиями «Мы хотим сделать. Она создала сайт google-sites, чтобы сделать то же самое примерно за 5 минут, просто перетащив календарь на отредактированную страницу, и хотела знать, почему это не так просто для android!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...