91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android網頁WebView圖片文件上傳的問題

發布時間:2020-07-13 22:48:15 來源:網絡 閱讀:6445 作者:拾荒者老大 欄目:移動開發

在安卓下,webview上傳圖片點擊是沒用的,需要自己寫一下.

網上關于這個的很多,基本都是抄來抄去,沒什么用的.

這個日期比較新,而且能用

http://blog.csdn.net/djcken/article/details/46379929#comments

就是自定義實現 WebChromeClient


然后重寫  openFileChooser  方法,獲取 ValueCallback<Uri> valueCallback


當然,要注意不同版本的區別.,但5.0+的項目,就不能用了.回復里有答案.

就是重寫 onShowFileChooser 但這次是 ValueCallback<Uri[]> valueCallback

雖然麻煩點,但能實現

使用騰訊X5內核http://x5.tencent.com/  不用去考慮那些版本兼容,只要重寫openFileChooser 獲取 ValueCallback<Uri> valueCallback

在這些方法 可以直接跳轉相冊或相機,也可以彈出對話框來選擇;

只需在 onActivityResult 方法獲取 android.net.Uri 對象就行
跳轉相冊:

Intent intent = Intent(Intent., );
intent.setDataAndType(MediaStore.Images.Media., );
startActivityForResult(15);

相冊結果:  Uri uri = data.getData();
跳轉相機 :

private Uri photoUri;

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
photoUri = context.getContentResolver().insert(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(16);
相機結果:  直接 photoUri 就行

把圖片給網頁,用剛才獲取的valueCallback
        valueCallback.onReceiveValue(uri);
        如果用戶取消就
        valueCallback.onReceiveValue(null);
然后每次都要  uriValueCallback = null;


這些和網上的基本一樣,但今天被一個問題坑了很久...
錯誤日志是這樣的
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=18, result=0, data=null} to activity {com.tugouzhong.micromall/com.tugouzhong.user.WebActivity}: java.lang.IllegalStateException: showFileChooser result was already called
at android.app.ActivityThread.deliverResults(ActivityThread.java:3609)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3652)
at android.app.ActivityThread.access$1300(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5313)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1116)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:809)

Caused by: java.lang.IllegalStateException: showFileChooser result was already called
at com.tencent.smtt.webkit.x$14.a(Unknown Source)
at com.tencent.smtt.webkit.x$14.onReceiveValue(Unknown Source)
at com.tencent.smtt.sdk.o.a(Unknown Source)
at com.tencent.smtt.sdk.o.onReceiveValue(Unknown Source)
at com.test.user.WebActivity.onActivityResult(WebActivity.java:214)
at android.app.Activity.dispatchActivityResult(Activity.java:6240)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3605)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3652) 
at android.app.ActivityThread.access$1300(ActivityThread.java:159) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5313) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1116) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:809)     

這個是用的x5內核的日志,用系統的也是java.lang.IllegalStateException這個問題.
網上找竟然沒發現同樣問題的人....
自己看了下,原來是在openFileChooser方法里調用了
super.openFileChooser(valueCallback, acceptType, captureType);
把這句刪掉就行;










向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙湾县| 阳春市| 丹棱县| 晋中市| 河间市| 砚山县| 马山县| 黑龙江省| 铜陵市| 乌什县| 常宁市| 梨树县| 望谟县| 北川| 济南市| 谢通门县| 定州市| 诸城市| 牟定县| 乌苏市| 定兴县| 彰化市| 昔阳县| 新和县| 石泉县| 文山县| 广州市| 东宁县| 宜兴市| 布尔津县| 仁寿县| 即墨市| 宁夏| 苍梧县| 抚顺县| 青铜峡市| 林周县| 淄博市| 湟中县| 越西县| 林口县|