Cámara Android y H5, notas del álbum de fotos

     Las páginas H5 están integradas en Android en el proyecto de la empresa, y las páginas H5 deben seleccionar la función de carga de imágenes. La etiqueta H5 no puede activar las funciones de cámara y galería de Android, por lo que solo puede ser procesada por Android. Lo hice por primera vez, basándome en muchos códigos en Internet, y lo resumí de la siguiente manera:

    Usamos WebView para cargar páginas H5 y necesitamos usar WebView para cargar archivos. De forma predeterminada, el uso de WebView de Android no es compatible con la carga de archivos. En este momento, webView necesita configurar WebChromeClient y reescribir algunos métodos, de la siguiente manera:


Introduzca el método anterior:

openFileChooser():系统未暴露的接口,因此不需要加Override的注解,同时不同版本有不同的参数.
参数:
ValueCallback: 选择完文件后,接收文件回调到网页内处理
acceptType:接受的文件mime type。

onShowFileChooser:Android 5.0之后,系统提供了来让我们实现选择文件的方法。
参数:
FileChooserParams:在该参数中,同样包括acceptType。我们可以根据acceptType,来打开系统的或者我们自己创建文件选择器。

Nota:

  1. Debido a la diferencia entre las diferentes versiones, el tipo de parámetro recibido por onReceiveValue de ValueCallback es Uri para versiones anteriores a Android 5.0, y la matriz Uri se recibe para versiones 5.0 y posteriores. Debe prestar atención al transferir valores.
  2. Incluso si el resultado obtenido es nulo, se debe pasar a la vista web, es decir, se llama directamente a mUploadMessage.onReceiveValue (null), de lo contrario se bloqueará la página web. 
  3. Al seleccionar el archivo, se utilizarán los componentes proporcionados por el sistema u otras aplicaciones compatibles. Algunas de las URL devueltas son directamente la URL del archivo y otras son las URL del proveedor de contenido. Por lo tanto, debemos tratarlo de manera unificada. y convertirlo en el uri del archivo.

  4. Al abrir el paquete de lanzamiento, debido a que confundiremos, debemos configurar específicamente para no confundir el método openFileChooser en la subclase WebChromeClient. Dado que no es un método heredado, se confundirá de forma predeterminada, y luego el archivo no se puede seleccionar.

El código cuando se llama al front-end H5:

<input capture="camera" class="upload-input" type="file" accept="image/*" οnchange="angular.element(this).scope().img_upload(this.files)"/>


Imagen del efecto: (efecto de ejecución del simulador)



La prueba de la máquina real está bien.

Dirección de descarga de demostración: https://github.com/xufei5789651/UploadH5Demo

Aprenda de la siguiente manera:

http://teachcourse.cn/2224.html

Supongo que te gusta

Origin blog.csdn.net/xufei5789651/article/details/71422807
Recomendado
Clasificación