1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
require "import"
import "android.app.Activity" import "android.net.Uri"
uiManager=activity.getUiManager() webView=uiManager.getCurrentFragment().getWebView()
import "android.webkit.WebChromeClient" webView.setWebChromeClient(luajava.override(WebChromeClient,{ onShowFileChooser=function(_,view,valueCallback,fileChooserParams) uploadFile=valueCallback activity.startActivityForResult(fileChooserParams.createIntent(),1) return true end, }))
onActivityResult=function(requestCode,resultCode,intent) if resultCode==Activity.RESULT_CANCELED and uploadFile uploadFile.onReceiveValue(nil) end local results if resultCode==Activity.RESULT_OK if not uploadFile or type(uploadFile)=="number" return end if intent local dataString=intent.dataString local clipData=intent.clipData if clipData results=Uri[clipData.itemCount] for i=0,clipData.itemCount-1 local item=clipData.getItemAt(i) results[i]=item.uri end end if dataString results=Uri[1] results[0]=Uri.parse(dataString) end end end if results uploadFile.onReceiveValue(results) uploadFile=nil end end
|