<template xlang="wxml" minapp="mpvue">
    <view>
    </view>
</template>
<script>
    export default {
        name: 'tki-file-manager',
        props: {},
        data() {
            return {}
        },
        methods: {
            _openFile() {
                // #ifdef APP-PLUS
                if (plus.os.name.toLowerCase() != "android") {
                    uni.showModal({
                        title: '提示',
                        content: '仅支持Android平台',
                        success: function(res) {}
                    });
                    return false
                }
                let that = this
                // java 代码来自 http://www.cnblogs.com/panhouye/archive/2017/04/23/6751710.html
                let main = plus.android.runtimeMainActivity();
                let Intent = plus.android.importClass("android.content.Intent");

                // 
                let fileIntent = new Intent(Intent.ACTION_GET_CONTENT)
                //fileIntent.setType(“image/*”);//选择图片
                //fileIntent.setType(“audio/*”); //选择音频
                //fileIntent.setType(“video/*”); //选择视频 （mp4 3gp 是android支持的视频格式）
                //fileIntent.setType(“video/*;image/*”);//同时选择视频和图片
                fileIntent.setType("*/*"); //无类型限制
                fileIntent.addCategory(Intent.CATEGORY_OPENABLE);
                main.startActivityForResult(fileIntent, 1);
                // 获取回调
                main.onActivityResult = function(requestCode, resultCode, data) {
                    let Activity = plus.android.importClass("android.app.Activity");
                    let ContentUris = plus.android.importClass("android.content.ContentUris");
                    let Cursor = plus.android.importClass("android.database.Cursor");
                    let Uri = plus.android.importClass("android.net.Uri");
                    let Build = plus.android.importClass("android.os.Build");
                    let Environment = plus.android.importClass("android.os.Environment");
                    let DocumentsContract = plus.android.importClass("android.provider.DocumentsContract");
                    let MediaStore = plus.android.importClass("android.provider.MediaStore");
                    // 给系统导入 contentResolver
                    let contentResolver = main.getContentResolver()
                    plus.android.importClass(contentResolver);
                    // 返回路径
                    let path = '';
                    if (resultCode == Activity.RESULT_OK) {
                        let uri = data.getData()

                        if ("file" == uri.getScheme().toLowerCase()) { //使用第三方应用打开
                            path = uri.getPath();
                            return;
                        }
                        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { //4.4以后
                            path = getPath(this, uri);
                        } else { //4.4以下下系统调用方法
                            path = getRealPathFromURI(uri)
                        }
                        // 回调
                        that.$emit('result', path)
                    }
                    // 4.4 以上 从Uri 获取文件绝对路径
                    function getPath(context, uri) {
                        let isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
                        let scheme = uri.getScheme().toLowerCase()

                        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
                            // ExternalStorageProvider
                            if (isExternalStorageDocument(uri)) {
                                let docId = DocumentsContract.getDocumentId(uri);
                                let split = docId.split(":");
                                let type = split[0];
                                // 如果是手机内部存储
                                if ("primary" == type.toLowerCase()) {
                                    return Environment.getExternalStorageDirectory() + "/" + split[1];
                                } else {
                                    return '/storage/' + type + "/" + split[1];
                                }
                            }
                            // DownloadsProvider
                            else if (isDownloadsDocument(uri)) {
                                let docId = DocumentsContract.getDocumentId(uri);
                                let split = docId.split(":");
                                return split[1]
                                // console.log(id)
                                // let contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), id);
                                // return getDataColumn(context, contentUri, null, null);
                            }
                            // MediaProvider
                            else if (isMediaDocument(uri)) {
                                let docId = DocumentsContract.getDocumentId(uri);
                                let split = docId.split(":");
                                let type = split[0];
                                let contentUri = null;
                                if ("image" == type.toLowerCase()) {
                                    contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                                } else if ("video" == type.toLowerCase()) {
                                    contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                                } else if ("audio" == type.toLowerCase()) {
                                    contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                                }
                                let selection = "_id=?";
                                let selectionArgs = [split[1]];
                                return getDataColumn(context, contentUri, selection, selectionArgs);
                            }
                        }
                        // MediaStore (and general)
                        else if ("content" == scheme) {
                            return getDataColumn(context, uri, null, null);
                        }
                        // File
                        else if ("file" == scheme) {
                            return uri.getPath();
                        }
                    }
                    // 4.4 以下 获取 绝对路径
                    function getRealPathFromURI(uri) {
                        let res = null
                        let proj = [MediaStore.Images.Media.DATA]
                        let cursor = contentResolver.query(uri, proj, null, null, null);
                        if (null != cursor && cursor.moveToFirst()) {
                            ;
                            let column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                            res = cursor.getString(column_index);
                            cursor.close();
                        }
                        return res;
                    }
                    // 通过uri 查找出绝对路径
                    function getDataColumn(context, uri, selection, selectionArgs) {
                        let cursor = null;
                        let column = "_data";
                        let projection = [column];
                        // let contentResolver = context.getContentResolver()
                        // plus.android.importClass(contentResolver);
                        cursor = contentResolver.query(uri, projection, selection, selectionArgs, null);
                        if (cursor != null && cursor.moveToFirst()) {
                            let column_index = cursor.getColumnIndexOrThrow(column);
                            return cursor.getString(column_index);
                        }
                    }

                    function isExternalStorageDocument(uri) {
                        return "com.android.externalstorage.documents" == uri.getAuthority() ? true : false
                    }

                    function isDownloadsDocument(uri) {
                        return "com.android.providers.downloads.documents" == uri.getAuthority() ? true : false
                    }

                    function isMediaDocument(uri) {
                        return "com.android.providers.media.documents" == uri.getAuthority() ? true : false
                    }
                }
                // #endif
                // #ifndef APP-PLUS
                uni.showModal({
                    title: '提示',
                    content: '仅支持Android平台',
                    success: function(res) {

                    }
                });
                // #endif
            },
        },
        onLoad() {
            // 			plus.io.resolveLocalFileSystemURL( '/storage/emulated/0', function(fs) {
            // 				var directoryReader = fs.createReader();
            // 				directoryReader.readEntries(function(entries) {
            // 					var i;
            // 					for (i = 0; i < entries.length; i++) {
            // 						console.log(entries[i].name);
            // 					}
            // 				}, function(e) {
            // 					console.log("Read entries failed: " + e.message);
            // 				});
            // 			}, function(e) {
            // 				console.log("Request file system failed: " + e.message);
            // 			});
        }
    }
</script>
