Upload image in webview Android Xamarin
public class WebChromeClientIndigo : WebChromeClient
{
Action<IValueCallback, Java.Lang.String, Java.Lang.String> callback;
public WebChromeClientIndigo(Action<IValueCallback, Java.Lang.String, Java.Lang.String> callback)
{
this.callback = callback;
}
//For Android 4.1
[Java.Interop.Export]
public void openFileChooser(IValueCallback uploadMsg, Java.Lang.String acceptType, Java.Lang.String capture)
{
callback(uploadMsg, acceptType, capture);
}
}
In Activity
public class WebViewActivity : Activity
{
WebViewClientIndigo webViewClient;
WebChromeClientIndigo webChrome;
public IValueCallback MUploadMessage { get; set; }
public static int FILECHOOSER_RESULTCODE = 100;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.webviewLayout);
webChrome = new WebChromeClientIndigo((uploadMsg, acceptType, capture) => {
MUploadMessage = uploadMsg;
var i = new Intent(Intent.ActionGetContent);
i.AddCategory(Intent.CategoryOpenable);
i.SetType("image/*");
StartActivityForResult(Intent.CreateChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
});
}
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
if (requestCode == FILECHOOSER_RESULTCODE)
{
if (MUploadMessage == null) return;
Android.Net.Uri result = (data == null || resultCode != Result.Ok) ? null : data.Data;
MUploadMessage.OnReceiveValue(result);
MUploadMessage = null;
}
}
}
{
Action<IValueCallback, Java.Lang.String, Java.Lang.String> callback;
public WebChromeClientIndigo(Action<IValueCallback, Java.Lang.String, Java.Lang.String> callback)
{
this.callback = callback;
}
//For Android 4.1
[Java.Interop.Export]
public void openFileChooser(IValueCallback uploadMsg, Java.Lang.String acceptType, Java.Lang.String capture)
{
callback(uploadMsg, acceptType, capture);
}
}
In Activity
public class WebViewActivity : Activity
{
WebViewClientIndigo webViewClient;
WebChromeClientIndigo webChrome;
public IValueCallback MUploadMessage { get; set; }
public static int FILECHOOSER_RESULTCODE = 100;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.webviewLayout);
webChrome = new WebChromeClientIndigo((uploadMsg, acceptType, capture) => {
MUploadMessage = uploadMsg;
var i = new Intent(Intent.ActionGetContent);
i.AddCategory(Intent.CategoryOpenable);
i.SetType("image/*");
StartActivityForResult(Intent.CreateChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
});
}
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
if (requestCode == FILECHOOSER_RESULTCODE)
{
if (MUploadMessage == null) return;
Android.Net.Uri result = (data == null || resultCode != Result.Ok) ? null : data.Data;
MUploadMessage.OnReceiveValue(result);
MUploadMessage = null;
}
}
}