美文网首页Weex
weex☞打开本地相册

weex☞打开本地相册

作者: 小学生的博客 | 来源:发表于2018-12-07 13:06 被阅读49次

获取通讯录、扫码、打开相册、拍照等操作,都是一个套路,就是创建module,原生实现这些方法,前端调用是时候返回最终的结果。
下面是如何打开本地相册,并获取照片路径。

public class PickImageModule extends WXModule {

    public static final int REQUEST_CODE = 10010;
    public final static int CAMERA_REQUEST_CODE= 1;

    protected JSCallback callback;
    
    @JSMethod(uiThread = true)
    public void choosePhoto(JSCallback callback) {
        if (ContextCompat.checkSelfPermission(mWXSDKInstance.getContext(),
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions((WXPageActivity) mWXSDKInstance.getContext(),
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    CAMERA_REQUEST_CODE);
        } else { 
            choosePhoto();
        }
        this.callback = callback;
    }

    private void choosePhoto() {
        Intent intentToPickPic = new Intent(Intent.ACTION_PICK, null);   intentToPickPic.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/jpeg");
        ((Activity) (mWXSDKInstance.getContext())).startActivityForResult(intentToPickPic, GALLERY_REQUEST_CODE);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == WXPageActivity.RESULT_OK) {
            switch (requestCode) {
                case GALLERY_REQUEST_CODE: {
                    try {
                        Uri selectedImage = data.getData();
                        String[] filePathColumns = {MediaStore.Images.Media.DATA};
                        Cursor c = mWXSDKInstance.getContext().getContentResolver().query(selectedImage, filePathColumns, null, null, null);
                        c.moveToFirst();
                        int columnIndex = c.getColumnIndex(filePathColumns[0]);
                        String picturePath = c.getString(columnIndex);
                        c.close();
                        callback.invoke(picturePath);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                }
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

}

配置相应的权限,在WXApplication中加入

   WXSDKEngine.registerModule("pickPhoto", PickImageModule.class);

然后就是前端调用

const pickPhoto = weex.requireModule('pickPhoto')
...         //在方法中直接使用就行了
            pickPhoto .choosePhoto(res => {
                   ...
                })

相关文章

  • weex☞打开本地相册

    获取通讯录、扫码、打开相册、拍照等操作,都是一个套路,就是创建module,原生实现这些方法,前端调用是时候返回最...

  • 七堇年粉丝群

    *建议截图二维码保存至 本地相册 再打开相关app选取 本地相册 即可识别二维码加群。 “第二届柒粉漂流本子传递”...

  • 打开相册

    /** * 打开相册 */ - (IBAction)openPhotoLibiary:(UIButton *)se...

  • 打开相册

    //判断camera是否可用UIImagePickerController.isCameraDeviceAvail...

  • 本地相册开发

    PHFetchResult 相簿内的资源,用了存放的PHAsset结果中的内容可以像使用NSArray类的方法获取...

  • 调用本地相册本地相机

    访问本地相册 1 需要签两个协议 2 创建UIImagePickerController来访问相...

  • Android和js交互 ,js例子

    测试 JS调本地相册 JS调用相册

    iOS开发之将图片存入手机是相册

    方法介绍 创建UIImageView 并添加轻触手势 将图片添加到本地相册 检测是否添加到本地相册 OK 有实现了...

  • iOS通过AssetsLibrary获取相册内的图片和视频和写入

    开发中遇到UI出图 获取本地相册的所有图片和视频 选择上传所以选择了AssetsLibrary来获取本地相册里的东...

  • 打开系统相册

    首先在清单文件中添加权限,无论是拍照还是从相册中选择图片都涉及到用户的隐私,所以我们需要声明权限,需要在清单文件中...

网友评论

    本文标题:weex☞打开本地相册

    本文链接:https://www.haomeiwen.com/subject/wslthqtx.html