Мы хотим, чтобы наше приложение отображало события только из общего календаря 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!