Android ios en la aplicación web solo llama al método de la cámara

Android ios en la aplicación web solo llama al método de la cámara

Feliz trabajo, tantos problemas. (O (╥﹏╥) o) Un
nuevo problema en la aplicación web, para resolver un problema de que cuando haces clic en la imagen cargada, no puedes llamar al álbum cuando llamas directamente a la cámara. (Qué tipo de operación es esta, tonta)
Solo recuerdo que el atributo de captura puede llamar directamente a la cámara, video y otras funciones, pero se quita el atributo múltiple que se puede seleccionar. El primer intento ha fallado, pero este se puede usar en ios , entonces El problema a resolver es Android.
No sé qué hacer, pregúntale a Baidu Baba, el modo loco de Baidu ha comenzado, y todavía no hay solución, así que solo puedo deshacerme del jefe de Android y escribir un método. Jejeje, aquí
está tu ejemplo de código favorito

Método de llamada de front-end

Debido a que es posible admitir solo llamar a la cámara en ios, se acordó con Android cambiar el valor en aceptar para que la aplicación abra directamente la cámara
. 1. Antes de la modificación

 <input type="file" capture="camera" ng-model="vm.avatarFile1" ngf-accept="'image/*'">

2. Después de la modificación

 <input type="file" capture="camera" ng-model="vm.avatarFile1" ngf-accept="'bugdd/*'">

Código de shell de Android

El significado de este código es probablemente obtener el parámetro en Aceptar y determinar si contiene el parámetro que necesita. Si lo contiene, llame al método de cámara, si no, llame a los métodos de cámara y álbum.

@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
    
    
    String[] acceptTypes = fileChooserParams.getAcceptTypes();
    mOpenFileChooserCallBack.showFileChooserCallBack(filePathCallback, acceptTypes);
    return true;
}

public interface OpenFileChooserCallBack {
    
    
    void openFileChooserCallBack(ValueCallback<Uri> uploadMsg, String acceptType);
    void showFileChooserCallBack(ValueCallback<Uri[]> filePathCallback, String[] acceptTypes);
}


@Override
public void showFileChooserCallBack(ValueCallback<Uri[]> filePathCallback, String[] acceptType) {
    
    
    mUploadMsg5Plus = filePathCallback;
    showOptions(acceptType[0]);
}

public void showOptions(String acceptType) {
    
    
    if (acceptType.indexOf("bugdd")) {
    
    //判断accept中是否有这个参数
        startCamera();
    } else {
    
    
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        alertDialog.setOnCancelListener(new ReOnCancelListener());
        alertDialog.setItems(array.options, new DialogInterface.OnClickListener() {
    
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
    
    
                /**
                 * 相册
                 */
                if (which == 0) {
    
    

                    startPicture();
                }
                /**
                 * 拍照
                 */
                if (which == 1) {
    
    

                    //启动相机
                    startCamera();
                }
            }
        });
        alertDialog.show();
    }
}


/**
 * 启动选择照片
 */
private void startPicture() {
    
    

    if (!checkPermission(MyConstant.img_permissions, REQUEST_CODE_PICK_IMAGE_PER)) {
    
    
        return;
    }

    pick_imageIntent = ImageUtil.choosePicture();
    startActivityForResult(pick_imageIntent, REQUEST_CODE_PICK_IMAGE);
}


/**
 * 打开相机获取图片
 */
private void startCamera() {
    
    

    if (!this.checkPermission(MyConstant.photo_permissions, REQUEST_CODE_IMAGE_CAPTURE_PER)) {
    
    
        return;
    }

    image_captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    //判断是否有相机应用
    if (image_captureIntent.resolveActivity(getPackageManager()) == null) {
    
    
        //无相机
        Toast.makeText(this, "无法打开相机", Toast.LENGTH_SHORT).show();
        return;
    }
    //设置兼容配置 主要考虑 Android N
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    
    

        //申请权限
        image_captureIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        image_captureIntent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        //
    }

    try {
    
    

        photoFile = createImageFile();
    } catch (Exception ex) {
    
    
        ex.printStackTrace();
    }

    if (photoFile != null) {
    
    
        contentUri = FileProvider.getUriForFile(this,
                "com.zrbx.yzs.fileProvider",
                photoFile);

    }

    image_captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);
    startActivityForResult(image_captureIntent, REQUEST_CODE_IMAGE_CAPTURE);
}

Supongo que te gusta

Origin blog.csdn.net/lbchenxy/article/details/98481699
Recomendado
Clasificación