weex☞打开本地相册

获取通讯录、扫码、打开相册、拍照等操作,都是一个套路,就是创建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 => {
                   ...
                })
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 时节交替,早晨和晚上透出的阵阵凉意宣告着秋天已来到。 然而中午依旧会是艳阳高照,带来的燥热感提醒着大家夏天还没有结...
    咩一阅读 220评论 0 0
  • 夜 落幕了 对着窗户外着呆 看着天空中的星星 以及那皎洁的弯月 想必就要圆了 圆了远方 圆了期盼 圆了思念 那一颗...
    晚晴先生阅读 400评论 2 0
  • 今天藤子说说掌握速读这门技能你将得到什么,有机会变成一个什么样的人! 1、掌握了快速阅读,能够让你省时间 更快的浏...
    张立藤阅读 681评论 0 2
  • 2018年6月10日 星期天 晴天 【一】 课前复习。 由于学员们在家练习较少,直接导致课堂上用口令带课结结...
    雨夜梅子阅读 1,280评论 3 6

友情链接更多精彩内容