2016-06-01 59 views
4

Android webviewでは、ファイルアップロードオプションをクリックすると、画像ギャラリーからアップロードするファイルを選択するユーザーの意図が呼び出されるonShowFileChooserが呼び出されます。 次の理由にはクラッシュonActivityResult内で、ファイルを選択した後Android webview、onActivityResultの結果を設定するとファイルのアップロードがクラッシュする

java.lang.IllegalStateException: Duplicate showFileChooser result 
     at org.chromium.android_webview.AwWebContentsDelegateAdapter$2.onReceiveValue(AwWebContentsDelegateAdapter.java:225) 
     at org.chromium.android_webview.AwWebContentsDelegateAdapter$2.onReceiveValue(AwWebContentsDelegateAdapter.java:220) 
     at com.android.webview.chromium.WebViewContentsClientAdapter$4.onReceiveValue(WebViewContentsClientAdapter.java:1063) 
     at com.android.webview.chromium.WebViewContentsClientAdapter$4.onReceiveValue(WebViewContentsClientAdapter.java:1047) 

答えて

5
@Override 
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { 
    mActivity.setValueCallback(filePathCallback); 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    intent.setType("*/*"); 
    mActivity.startActivityForResult(Intent.createChooser(intent, ""), Final.REQUEST_CODE_ALBUM); 
    return true; 
} 

リターン真

+1

「trueを返す」私のために、この問題を修正一部でした。ありがとうございました。 –

0

私はあなたのWebViewを実装し、あなたのAndroid上でのファイルのアップロードを処理するためのWebViewクロムクライアントを拡張する必要があると思います電話アプリケーション。あなたはこれらを読むことができますarticle webviewクライアントクラスとウェブクロムクライアントを実装する方法を理解するのに役立つかもしれません

0

それはあなたがuriのデータを取って、あなたがfilePathCallbackを呼んでonShowFileChooserと計画をオーバーライドする場合

Android.Net.Uri[] result = data == null || resultCode != Result.Ok ? null : new Android.Net.Uri[] { data.Data };

1

:コードの下

Android.Net.Uri result = data == null || resultCode != Result.Ok ? null : data.Data ; 
var a = new Android.Net.Uri[] { result }; 

で問題が解決:givinf重複エラーだった コード:C#では、私はこの問題を解決するには、以下の行っています結果を返す場合は、onShowFileChooserからtrueを返す必要があります。これは、基になるコードにfilePathCallbackに値を渡さないように指示します。

真は、基本的に

ドキュメント「私はそれを処理します」と言っている: @return true if filePathCallback will be invoked, false to use default handling.

関連する問題