From 62fd00c871020c5983dc02c4c1b26505f97630f3 Mon Sep 17 00:00:00 2001 From: tom79 Date: Sat, 11 Apr 2020 14:43:33 +0200 Subject: [PATCH] Fix crash when playing youtube videos --- app/build.gradle | 1 + app/src/main/assets/changelogs/359.txt | 5 +++++ .../fedilab/android/drawers/StatusListAdapter.java | 12 ++++++++++-- .../java/app/fedilab/android/helper/Helper.java | 8 +++++++- .../android/webview/MastalabWebChromeClient.java | 5 +++++ .../main/res/layout/fragment_settings_reveal.xml | 13 +++++++++---- app/src/main/res/values/strings.xml | 1 + build.gradle | 2 +- 8 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 app/src/main/assets/changelogs/359.txt diff --git a/app/build.gradle b/app/build.gradle index 9b1476805..80069389a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,6 +47,7 @@ android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } + viewBinding.enabled = true } allprojects { repositories { diff --git a/app/src/main/assets/changelogs/359.txt b/app/src/main/assets/changelogs/359.txt new file mode 100644 index 000000000..b237b22a1 --- /dev/null +++ b/app/src/main/assets/changelogs/359.txt @@ -0,0 +1,5 @@ +Changed: + + +Fixed: +- Crash when Youtube videos in timelines \ No newline at end of file diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 761778fd3..a31920fa0 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -2141,7 +2141,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct if (status.getReblog() == null) { if (status.getWebviewURL() != null) { String url = status.getWebviewURL().replaceAll("&", "&"); - holder.status_cardview_webview.loadUrl(url); + try { + holder.status_cardview_webview.loadUrl(url); + }catch (Exception e){ + e.printStackTrace(); + } holder.status_cardview_webview.setVisibility(View.VISIBLE); holder.status_cardview_video.setVisibility(View.VISIBLE); holder.webview_preview.setVisibility(View.GONE); @@ -2153,7 +2157,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } else { if (status.getReblog().getWebviewURL() != null) { String url = status.getReblog().getWebviewURL().replaceAll("&", "&"); - holder.status_cardview_webview.loadUrl(url); + try { + holder.status_cardview_webview.loadUrl(url); + }catch (Exception e){ + e.printStackTrace(); + } holder.status_cardview_webview.setVisibility(View.VISIBLE); holder.status_cardview_video.setVisibility(View.VISIBLE); holder.webview_preview.setVisibility(View.GONE); diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index f21d7b05e..ee5e6fb8a 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -79,6 +79,7 @@ import android.view.WindowManager; import android.webkit.CookieManager; import android.webkit.MimeTypeMap; import android.webkit.URLUtil; +import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Button; @@ -2222,7 +2223,12 @@ public class Helper { webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setDatabaseEnabled(true); webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); - + webView.setWebChromeClient(new WebChromeClient() { + @Override + public Bitmap getDefaultVideoPoster() { + return Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888); + } + }); boolean proxyEnabled = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false); if (proxyEnabled) { String host = sharedpreferences.getString(Helper.SET_PROXY_HOST, "127.0.0.1"); diff --git a/app/src/main/java/app/fedilab/android/webview/MastalabWebChromeClient.java b/app/src/main/java/app/fedilab/android/webview/MastalabWebChromeClient.java index 925b16c59..b66395c35 100644 --- a/app/src/main/java/app/fedilab/android/webview/MastalabWebChromeClient.java +++ b/app/src/main/java/app/fedilab/android/webview/MastalabWebChromeClient.java @@ -76,6 +76,11 @@ public class MastalabWebChromeClient extends WebChromeClient implements MediaPla } } + @Override + public Bitmap getDefaultVideoPoster() { + return Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888); + } + @Override public void onReceivedIcon(WebView view, Bitmap icon) { super.onReceivedIcon(view, icon); diff --git a/app/src/main/res/layout/fragment_settings_reveal.xml b/app/src/main/res/layout/fragment_settings_reveal.xml index c4aaa8a71..e3be902d4 100644 --- a/app/src/main/res/layout/fragment_settings_reveal.xml +++ b/app/src/main/res/layout/fragment_settings_reveal.xml @@ -1843,7 +1843,9 @@ android:id="@+id/translation_key" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/your_api_key" /> + android:hint="@string/your_api_key" + android:inputType="text" + android:importantForAutofill="no" /> + android:hint="@string/settings_custom_sharing_url" + android:inputType="textUri" + android:importantForAutofill="no" /> + android:inputType="textWebEditText" + android:importantForAutofill="no" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 28ee0ba50..000a0b10e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1226,4 +1226,5 @@ Announcements No announcements! Add a reaction + Use your favourite browser inside the app. Uncheck this feature to open links externally. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2d1d9aae1..db1fb473c 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.1' + classpath 'com.android.tools.build:gradle:3.6.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files