Open klren0312 opened 1 year ago
const MainActivity = plus.android.runtimeMainActivity()
const Intent = plus.android.importClass('android.content.Intent')
const Uri = plus.android.importClass('android.net.Uri')
const File = plus.android.importClass('java.io.File')
const intent = new Intent(Intent.ACTION_GET_CONTENT)
.setType('*/*')
.addCategory(Intent.CATEGORY_OPENABLE)
MainActivity.startActivityForResult(Intent.createChooser(intent, '选择文件上传'), 345)
MainActivity.onActivityResult = (requestCode, resultCode, data) => {
if (requestCode == 345) {
if (data && resultCode == -1 && data.getData()) {
var uri = data.getData();
plus.android.importClass(uri);
var Build = plus.android.importClass('android.os.Build');
var isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
console.log(isKitKat)
var DocumentsContract = plus.android.importClass('android.provider.DocumentsContract')
// DocumentProvider
if (isKitKat && DocumentsContract.isDocumentUri(MainActivity, uri)) {
console.log("版本大于 4.4 ")
// ExternalStorageProvider
console.log(uri.getAuthority())
if ("com.android.externalstorage.documents" == uri.getAuthority()) {
var docId = DocumentsContract.getDocumentId(uri)
var split = docId.split(":")
var type = split[0]
if ("primary" == type) {
var Environment = plus.android.importClass('android.os.Environment')
this.fileCallback(Environment.getExternalStorageDirectory() + "/" + split[1])
} else {
var System = plus.android.importClass('java.lang.System')
var sdPath = System.getenv("SECONDARY_STORAGE")
if (sdPath) {
this.fileCallback(sdPath + "/" + split[1])
}
}
}
// DownloadsProvider
else if ("com.android.providers.downloads.documents" == uri.getAuthority()) {
var id = DocumentsContract.getDocumentId(uri)
var ContentUris = plus.android.importClass('android.content.ContentUris')
var contentUri = ContentUris.withAppendedId(
// Uri.parse("content://downloads/public_downloads"), Long.valueOf(id))
Uri.parse("content://downloads/public_downloads"), id)
this.fileCallback(this.getDataColumn(MainActivity, contentUri, null, null))
}
// MediaProvider
else if ("com.android.providers.media.documents" == uri.getAuthority()) {
var docId = DocumentsContract.getDocumentId(uri)
var split = docId.split(":")
var type = split[0]
console.log(type)
var MediaStore = plus.android.importClass('android.provider.MediaStore')
if ("image" == type) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
} else if ("video" == type) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
} else if ("audio" == type) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
}
var selection = "_id=?"
var selectionArgs = new Array()
selectionArgs[0] = split[1]
this.fileCallback(this.getDataColumn(MainActivity, contentUri, selection, selectionArgs))
}
}
// MediaStore (and general)
else if ("content" == uri.getScheme()) {
this.fileCallback(this.getDataColumn(MainActivity, uri, null, null))
}
// File
else if ("file" == uri.getScheme()) {
this.fileCallback(uri.getPath())
}
}
}
}
https://ask.dcloud.net.cn/question/5783