I'm trying to embed a webview into an Android app based on Android 5.1.1.
Installed Android System WebView(beta) from the PlayStore, version 65.0.3325.114 but somehow when I try some URL, it doesn't seem to work well with JS ES6.
Checking nginx logs, show Chrome/39.0.0.0 so I suspect my app's WebView is still loading the built in WebView and not the Android System WebView.
Am I missing something or is there any way to enable from developer options?
Just found googling an option to enable but only for Android M, not present in 5.1.1.
Thanx!
Related
I am getting the following error (see image) when running a very basic Ionic 4 / Capacitor app on an Android 6 device.
I think it is because the the Android system webview needs to be updated.
I don't have access to the device myself as it is with a client, all I have is an emulator. I can't seem to update the webview version on the emulator and I don't think this is possible so I can't replicate.
Capacitor states it should work with back to Android 5.1 if the webview is up to date.
I am not that familiar with older Android devices.
Is it as simple as sending this link and getting them to update the webview via the play store?
Will the device have play store installed?
https://play.google.com/store/apps/details?id=com.google.android.webview&hl=en
Capacitor docs:
https://capacitor.ionicframework.com/docs/android/
**Note:** Currently to use an Android Emulator you must use a system image of at least Android version 7.0 on API 24. This is due to the System WebView version not being able to be updated on emulators. Physical devices should work as low as Android 5.1 so long as they are kept updated.
Update:
I go the app to run on the device by removing all Capacitor plugins.
How ever I still have several issues:
I need to use plugins in the app
The css is not getting displayed correctly at all. None of the Ionic 4 colors are applying and the style are off.
It appears even after updating the Android system webview via google play to the latest and updating google chrome it is still using an old version of the webview.
Here is the userAgent output:
Mozilla/5.0(Linux; Android 6.0; C72 Build/MRA58K; wv) AppleWebKit/537.36(KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.119
Mobile Safari/537.36
The latest version on chrome is 73.0.3683.90 so it is way off.
This is the device:
https://www.chainway.net/Products/Info/42
Final Update:
I contacted the manufacturer of the device and they confirmed that the webview was locked to version 44 on the firmware.
They are look at providing an updated version of the firmware with a more recent webview version.
Also it was only the capacitor/core plugins that were not working. I could still use other 3rd party plugins such as a barcode reader.
If you are in the situation above I recommend using navigator.userAgent to determine the webview version as mentioned by #jcesarmobile in the comments below.
Yes, if you send that link and they update the Android System WebView then the app should work fine.
Unless your customer is in China, Play Store doesn't work there.
I have an android tablet running lollipop (5.0.2).
I updated the android system webview to the latest version using google play. But I am under the impression that the apps are still using the old system webview.
How can I check which version of the webview is used by my apps?
I got an app to alert navigator.userAgent, and I get:
Version/4.0 Chrome/39.0.0.0
Is this the answer?
EDIT: If so, then how can I get the apps to use the new android system webview I just installed?
I'm trying to render some WebGL in my PhoneGap/Cordova app but I'm having no luck.
var canvas = document.createElement('canvas');
var gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
if (!gl) {
console.log('WebGL not supported');
}
The gl variable is always null.
I've tried with a OnePlus One and a Nexus 5 which are both Android KitKat v4.4.4 Chrome 38.
The same code works fine on iOS8 and on a desktop.
The code works on a normal webpage loaded in chrome on those devices. So does http://get.webgl.org/
I've even tried using CCA which uses crosswalk to bundle Chrome into the app.
I've tried Googling bug I'm flooded with people having problems from when devices didnt support it (iOS < v8 and Android < v4.4).
I'm thinking that it might be something that I have to enable in the build chain.
Thank you in advance.
Glen
I've figured it out with some help.
Even though I have Chrome 38 installed, the WebView is actually not using the installed chrome version but another version that ships with the OS and doesn't auto update.
The WebView is actually Chrome 33 which doesn't support WebGL.
When Android L comes out, it will support WebGL in the WebView which will automatically update too.
In regards to the CCA version, it bundles Chrome 37 which supports WebGL. It works on devices that don't have blacklisted GPUs. If you follow these instructions it tells you that you can make it ignore the blacklist and run on all devices but might have unstable results.
If you want to use WebGL on Android 4.0+ Ludei (http://ludei.com) has a project called WebView+ that allows you to use the latest Chromium project on Android. The drawback is that 15Mb are added to your final APK. You can test it using the CocoonJS Launcher App: https://play.google.com/store/apps/details?id=com.ideateca.cocoonjslauncher&hl=es where you can point to a URL (even use a QRCode so you do not have to type the whole URL on a mobile device) or even upload a whole ZIP file with your project to test it off-line.
Is this even possible with version 4.4.2 now? I had tried to use webview to load swf file on android application but it does not work. Can someone verify this?
Using Flash in Webviews on Android has not official been supported for a while. It sometimes works on older (4.0 and older) Androidversion where the flash plugin still is installed but the reach is constantly decreasing and I wouldn't recommend using it.
To deploy flash applications on your mobile device you might be able to use AIR though:
http://get.adobe.com/de/air/
according to Google, filechooser is taken off and no longer working on android 4.4, but why would chrome still working? I have a device that is running android 4.4. My app has a webview, and inside of this webview I have a button which allow user to upload photo. It was working fine until 4.4. my question is that how come Chrome is able to pick up filechooser event but mine is not while both apps(chrome and mine) are running on the same device. what did google do differently? Thanks!
There was a bug which occurred in KitKat which broke the file chooser for both Chrome (https://code.google.com/p/chromium/issues/detail?id=278640) and I believe the WebView was affected by the same problem.
WebView only ever supported a file chooser through a private API (i.e. an API which developers shouldn't use or rely on), which was removed in KitKat.
The WebView team are aware of the number of developers wanting this.
As Kinlan has stated, Chrome for Android doesn't use a WebView.