فراخوانی سایت با استفاده از webview در Xamarin

چهارشنبه 7 بهمن 1394

در این مقاله می خواهیم یک صفحه ی سایت را با استفاده از Webview client در یک صفحه ای ازوب فراخوانی نماییم، در واقع webview ابزاری برای نمایش سایت که به صورت استاتیک با گرفتن آدرس نمایش می دهد.

فراخوانی سایت با استفاده از webview در Xamarin

می توانید قبل از شروع مقاله ی فراخوانی سایت با استفاده از Webview در اندروید با جاوا را هم مطالعه نمایید.

در ابتدا در مورد webview کمی صحبت نماییم:

1-webview یک ابزاری است که برای نمایش صفحات وب از آن استفاده می شود، و صفحات سایت را به صورت استاتیک نمایش می دهد.

2-شامل قابلیت های یک مرورگر است که داخل یک نرم افزار یکپارچه شده است،مثل وردپرس، فلیپ بورد، Feedly

3-با استفاده از موتور webkit صفحات وب به همراه قابلیت های زوم و نمایش تاریخ و .. نمایش داده می شود.

4-اجرای webview کاملا ساده است ولی برای نمایش آنلاین و داینامیک استفاده نمی شود فقط برای نمایش استاتیک و به صورت آفلاین نمایش داده می شود.

در این مقاله در صفحه ی xaml خود یک webview قرار دهید که قرار است سایت مورد نظر را داخل آن بار گذاری نماییم.

داخل صفحه ی Layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView" />

</LinearLayout>

ابتدا می خواهیم یک صفحه ی html که شامل header,body و پاراگراف است را نمایش دهیم در واقع یک صفحه ی html قرار است ایجاد نماییم:

 WebView mWebView = FindViewById<WebView>(Resource.Id.webView);

            string customHtml = "<html><body><h1>Hello, WebView</h1>" +
                "<h1>Heading 1</h1><h2>Heading 2</h2><h3>Heading 3</h3>" +
                "<p>This is a sample paragraph.</p>" +
                "</body></html>";
            mWebView.LoadData(customHtml, "text/html", "UTF-8");

داخل activity مورد نظر webview مورد نظر را تعریف می کنیم،  باید android.webkit را در ابتدا import نمایید.

و در مرحله ی بعدی باید فایل html مورد نظر را صدا بزنیم و نوع آن را encoding کنید.

خروجی به صورت زیر خواهد بود:

حالا می خواهیم یک سایت در webview نمایش داده شود:

این webview به گونه ای است که نیاز به انتخاب لینک نیست و با اجرا شدن پروژه سایت مورد نظر باز خواهد شد.

ما از متد webviewclient استفاده می نماییم که متد shouldOverrideUrlLoading()

را override می نماید.

این متد مورد نظر زمانی که صدا زده می شود، ما می توانیم این را با استفاده از webviewclient تنظیم نماییم.

این متد webviewclient دارای 3 action است که هر کدام برای نمایش محتوای webview و یا handle کردن خطا استفاده می شود،

داخل کد activity قطعه کد زیر را قرار دهید:



  public class Activity2 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);

            WebView mWebView = FindViewById<WebView>(Resource.Id.webView);
            mWebView.Settings.JavaScriptEnabled = true;

            mWebView.SetWebViewClient(new MyWebViewClient());

            //Load url to be randered on WebView
            mWebView.LoadUrl("http://www.barnamenevisan.org");

            // Create your application here
        }
        public class MyWebViewClient : WebViewClient
	{
	  public override bool ShouldOverrideUrlLoading (WebView view, string url)
		{
			view.LoadUrl (url);
			return true;
		}

		public override void OnPageStarted (WebView view, string url, Android.Graphics.Bitmap favicon)
		{
			base.OnPageStarted (view, url, favicon);
		}

		public override void OnPageFinished (WebView view, string url)
		{
			base.OnPageFinished (view, url);
		}

		public override void OnReceivedError (WebView view, ClientError errorCode, string description, string failingUrl)
		{
			base.OnReceivedError (view, errorCode, description, failingUrl);
		}
	}
}

خروجی به صورت زیر خواهد بود:

دوره های آموزشی زامارین 

دوره برنامه نویسی اندروید با سی شارپ ( Xamarin )

آموزش متریال دیزاین در زامارین

آموزش Xamarin Forms

دوره Xamarin Form پیشرفته

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید