html video control is not working in codenameone app for android

五迷三道 提交于 2019-12-08 07:58:03

问题


I've a codenameone app that calls a secure website developed in html5. It uses html video control to take a snapshot. The site works in chrome perfectly. But when I call it from codenameone app, installed on Android device, the video control does not appear on the page. The required camera permissions are set in the App.

The log is as below:

LOGS....--------- beginning of main

09-07 15:43:39.586 23032 23085 I Adreno  : QUALCOMM build                   : 84c9b58, I4fcced3c6d
09-07 15:43:39.586 23032 23085 I Adreno  : Build Date                       : 01/17/18
09-07 15:43:39.586 23032 23085 I Adreno  : OpenGL ES Shader Compiler Version: XE031.09.00.04
09-07 15:43:39.586 23032 23085 I Adreno  : Local Branch                     : 
09-07 15:43:39.586 23032 23085 I Adreno  : Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.5.5.R1.07.01.02.269.061
09-07 15:43:39.586 23032 23085 I Adreno  : Remote Branch                    : NONE
09-07 15:43:39.586 23032 23085 I Adreno  : Reconstruct Branch               : NOTHING
09-07 15:43:39.595 23032 23085 I OpenGLRenderer: Initialized EGL, version 1.4
09-07 15:43:39.596 23032 23085 D OpenGLRenderer: Swap behavior 1
09-07 15:43:39.619 23032 23084 I Codename One: Resource not found: theme_phone.ovr
09-07 15:43:39.619 23032 23084 I Codename One: Resource not found: theme_android.ovr
09-07 15:43:39.619 23032 23084 I Codename One: Resource not found: theme_android-phone.ovr
09-07 15:43:39.630 23032 23041 I art     : Do partial code cache collection, code=9KB, data=30KB
09-07 15:43:39.630 23032 23041 I art     : After code cache collection, code=9KB, data=30KB
09-07 15:43:39.630 23032 23041 I art     : Increasing code cache capacity to 128KB
09-07 15:43:39.684 23032 23084 D RedirectToCameraHtml: [EDT] 0:0:0,124 - WARNING: Theme sets the commandBehavior constant which is deprecated.  Please update the theme to NOT include this theme constant.  Using commandBehavior may cause your app to perform in unexpected ways.  In particular, using SIDE command behavior in conjunction with Toolbar.setOnTopSideMenu(true) may result in runtime exceptions.
09-07 15:43:39.685 23032 23084 D RedirectToCameraHtml: [EDT] 0:0:0,126 - WARNING: Display.setCommandBehavior() is deprecated, Using it may result in unexpected behaviour. In particular, using COMMAND_BEHAVIOR_SIDE_NAVIGATION in conjunction with Toolbar.setOnTopSideMenu(true) may result in runtime errors.
09-07 15:43:39.691 23032 23094 D NetworkSecurityConfig: No Network Security Config specified, using platform default
09-07 15:43:39.707 23032 23094 D ApplicationLoaders: ignored Vulkan layer search path /data/app/com.android.chrome-2/lib/arm64:/data/app/com.android.chrome-2/base.apk!/lib/arm64-v8a for namespace 0x7f95e31160
09-07 15:43:39.708 23032 23084 I Timeline: Timeline: Activity_launch_request time:42584312 intent:Intent { act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.google.android.packageinstaller (has extras) }
09-07 15:43:39.714 23032 23094 I WebViewFactory: Loading com.android.chrome version 68.0.3440.91 (code 344009152)
09-07 15:43:39.769 23032 23041 I art     : Compiler allocated 5MB to compile void com.codename1.ui.plaf.UIManager.resetThemeProps(java.util.Hashtable)
09-07 15:43:39.776 23032 23084 D Codename One: sizechanged: 1080 1964 com.codename1.impl.android.CodenameOneView@8dc66a5
09-07 15:43:39.781 23032 23032 E SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
09-07 15:43:39.781 23032 23032 E SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
09-07 15:43:39.795 23032 23094 I cr_LibraryLoader: Time to load native libraries: 8 ms (timestamps 4390-4398)
09-07 15:43:39.808 23032 23094 I chromium: [INFO:library_loader_hooks.cc(36)] Chromium logging enabled: level = 0, default verbosity = 0
09-07 15:43:39.808 23032 23108 E cr_VariationsUtils: Failed reading seed file "/data/user/0/com.mycompany.myapp/app_webview/variations_seed_new": /data/user/0/com.mycompany.myapp/app_webview/variations_seed_new (No such file or directory)
09-07 15:43:39.808 23032 23094 I cr_LibraryLoader: Expected native library version number "68.0.3440.91", actual native library version number "68.0.3440.91"
09-07 15:43:39.809 23032 23108 E cr_VariationsUtils: Failed reading seed file "/data/user/0/com.mycompany.myapp/app_webview/variations_seed": /data/user/0/com.mycompany.myapp/app_webview/variations_seed (No such file or directory)
09-07 15:43:39.815 23032 23108 W System  : ClassLoader referenced unknown path: 
09-07 15:43:39.818 23032 23108 D ApplicationLoaders: ignored Vulkan layer search path /data/app/com.android.chrome-2/lib/arm64:/data/app/com.android.chrome-2/base.apk!/lib/arm64-v8a for namespace 0x7f95e311d0
09-07 15:43:39.851 23032 23041 I art     : Do partial code cache collection, code=39KB, data=61KB
09-07 15:43:39.851 23032 23041 I art     : After code cache collection, code=39KB, data=61KB
09-07 15:43:39.851 23032 23041 I art     : Increasing code cache capacity to 256KB
09-07 15:43:39.853 23032 23041 I art     : Compiler allocated 4MB to compile com.codename1.ui.plaf.Style com.codename1.ui.plaf.UIManager.createStyle(java.lang.String, java.lang.String, boolean)
09-07 15:43:42.420 23032 23032 E SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
09-07 15:43:42.420 23032 23032 E SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
09-07 15:43:42.432 23032 23084 D RedirectToCameraHtml: [EDT] 0:0:2,874 - getCameraPermission() >> true
09-07 15:43:42.534 23032 23032 I cr_BrowserStartup: Initializing chromium process, singleProcess=true
09-07 15:43:42.538 23032 23032 I cr_base : Android Locale: en_IN requires .pak files: [en-GB, en-US]
09-07 15:43:42.553 23032 23032 W ResourceType: Failure getting entry for 0x7f1204a3 (t=17 e=1187) (error -2147483647)
09-07 15:43:42.640 23032 23032 I art     : Rejecting re-init on previously-failed class java.lang.Class<ul>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/SafeBrowsingResponse;
09-07 15:43:42.640 23032 23032 I art     :   at xf com.android.webview.chromium.WebViewChromiumFactoryProvider.a(android.webkit.WebView, android.content.Context) (SourceFile:209)
09-07 15:43:42.640 23032 23032 I art     :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (SourceFile:63)
09-07 15:43:42.640 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
09-07 15:43:42.640 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
09-07 15:43:42.640 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
09-07 15:43:42.640 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:542)
09-07 15:43:42.641 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:532)
09-07 15:43:42.641 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21$1.<init>(com.codename1.impl.android.AndroidImplementation$21, android.content.Context) (AndroidImplementation.java:4143)
09-07 15:43:42.641 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21.run() (AndroidImplementation.java:4143)
09-07 15:43:42.641 23032 23032 I art     :   at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:754)
09-07 15:43:42.641 23032 23032 I art     :   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
09-07 15:43:42.641 23032 23032 I art     :   at void android.os.Looper.loop() (Looper.java:163)
09-07 15:43:42.641 23032 23032 I art     :   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6396)
09-07 15:43:42.641 23032 23032 I art     :   at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-07 15:43:42.641 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:904) 
09-07 15:43:42.641 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:794)
09-07 15:43:42.641 23032 23032 I art     : Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.SafeBrowsingResponse" on path: DexPathList[[zip file "/data/app/com.android.chrome-2/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-2/lib/arm64, /data/app/com.android.chrome-2/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
09-07 15:43:42.641 23032 23032 I art     :   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
09-07 15:43:42.641 23032 23032 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
09-07 15:43:42.641 23032 23032 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
09-07 15:43:42.641 23032 23032 I art     :   at xf com.android.webview.chromium.WebViewChromiumFactoryProvider.a(android.webkit.WebView, android.content.Context) (SourceFile:209)
09-07 15:43:42.641 23032 23032 I art     :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (SourceFile:63)
09-07 15:43:42.641 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
09-07 15:43:42.641 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
09-07 15:43:42.641 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
09-07 15:43:42.641 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:542)
09-07 15:43:42.641 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:532)
09-07 15:43:42.641 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21$1.<init>(com.codename1.impl.android.AndroidImplementation$21, android.content.Context) (AndroidImplementation.java:4143)
09-07 15:43:42.641 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21.run() (AndroidImplementation.java:4143)
09-07 15:43:42.641 23032 23032 I art     :   at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:754)
09-07 15:43:42.641 23032 23032 I art     :   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
09-07 15:43:42.641 23032 23032 I art     :   at void android.os.Looper.loop() (Looper.java:163)
09-07 15:43:42.641 23032 23032 I art     :   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6396)
09-07 15:43:42.641 23032 23032 I art     :   at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-07 15:43:42.641 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:904)
09-07 15:43:42.642 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:794)
09-07 15:43:42.642 23032 23032 I art     : 
09-07 15:43:42.647 23032 23032 I art     : Rejecting re-init on previously-failed class java.lang.Class<xo>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/RenderProcessGoneDetail;
09-07 15:43:42.647 23032 23032 I art     :   at xf com.android.webview.chromium.WebViewChromiumFactoryProvider.a(android.webkit.WebView, android.content.Context) (SourceFile:209)
09-07 15:43:42.647 23032 23032 I art     :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (SourceFile:63)
09-07 15:43:42.647 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
09-07 15:43:42.647 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
09-07 15:43:42.647 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
09-07 15:43:42.647 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:542)
09-07 15:43:42.647 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:532)
09-07 15:43:42.647 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21$1.<init>(com.codename1.impl.android.AndroidImplementation$21, android.content.Context) (AndroidImplementation.java:4143)
09-07 15:43:42.647 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21.run() (AndroidImplementation.java:4143)
09-07 15:43:42.647 23032 23032 I art     :   at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:754)
09-07 15:43:42.647 23032 23032 I art     :   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
09-07 15:43:42.647 23032 23032 I art     :   at void android.os.Looper.loop() (Looper.java:163)
09-07 15:43:42.647 23032 23032 I art     :   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6396)
09-07 15:43:42.647 23032 23032 I art     :   at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-07 15:43:42.647 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:904)
09-07 15:43:42.648 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:794)
09-07 15:43:42.648 23032 23032 I art     : Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.RenderProcessGoneDetail" on path: DexPathList[[zip file "/data/app/com.android.chrome-2/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-2/lib/arm64, /data/app/com.android.chrome-2/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
09-07 15:43:42.648 23032 23032 I art     :   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
09-07 15:43:42.648 23032 23032 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
09-07 15:43:42.648 23032 23032 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
09-07 15:43:42.648 23032 23032 I art     :   at xf com.android.webview.chromium.WebViewChromiumFactoryProvider.a(android.webkit.WebView, android.content.Context) (SourceFile:209)
09-07 15:43:42.648 23032 23032 I art     :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (SourceFile:63)
09-07 15:43:42.648 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
09-07 15:43:42.648 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
09-07 15:43:42.648 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
09-07 15:43:42.648 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:542)
09-07 15:43:42.648 23032 23032 I art     :   at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:532)
09-07 15:43:42.648 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21$1.<init>(com.codename1.impl.android.AndroidImplementation$21, android.content.Context) (AndroidImplementation.java:4143)
09-07 15:43:42.648 23032 23032 I art     :   at void com.codename1.impl.android.AndroidImplementation$21.run() (AndroidImplementation.java:4143)
09-07 15:43:42.648 23032 23032 I art     :   at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:754)
09-07 15:43:42.648 23032 23032 I art     :   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
09-07 15:43:42.648 23032 23032 I art     :   at void android.os.Looper.loop() (Looper.java:163)
09-07 15:43:42.648 23032 23032 I art     :   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6396)
09-07 15:43:42.648 23032 23032 I art     :   at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-07 15:43:42.648 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:904)
09-07 15:43:42.648 23032 23032 I art     :   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:794)
09-07 15:43:42.648 23032 23032 I art     : 
09-07 15:43:42.751 23032 23032 D EgretLoader: EgretLoader(Context context)
09-07 15:43:42.754 23032 23032 D EgretLoader: The context is not activity

回答1:


You need to prompt for native permissions in Android 6+. Adding them to the XML only works for older versions of Android. This is normally automatic if you use a camera API in Codename One but won't work for the case of HTML because we can't tell that you will try to access the camera.

You can create a native interface something like:

public boolean promptCameraPermission();

You can leave it unimplemented in all other platforms as it isn't needed, then when supported is true you can just invoke it to ask for permission.

return checkForPermission(Manifest.permission.CAMERA, "This is required to take a picture");

Make sure to import com.codename1.impl.android.AndroidImplementation;



来源:https://stackoverflow.com/questions/52095042/html-video-control-is-not-working-in-codenameone-app-for-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!