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;
            }
        }
}

Popular posts from this blog

Map asp.net webform to OWIN path