آموزش کار با Webview در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش کار با Webview در برنامه نویسی اندروید می پردازیم از webview برای نمایش یک سایت اینترنتی می توانید استفاده کنید به طور مثال شما یک سایتی دارید می خواهید نسخه اپ موبایلش رو هم منتشر کنید ( البته این کار زیاد جالب نیست ) می توانید از webview استفاده کنید یا بخواهید یک صفحه را به صورت html است را نمایش دهید. در ادامه با ما همراه باشید.
برای اینکه ما از webview استفاده کنیم باید در layout خود کد های زیر را قرار دهید.
1 2 3 4 5 | <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> |
کد بالا خود object اصلی ما است که وب سایت در آن نمایش داده می شود .
بعد از آن باید به بخش اکتیویتی که ساخت بروید در اینجا Mainactivity است. در ادامه تمامی بخش کد را توضیح خواهیم داد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import android.app.Activity; import android.os.Bundle; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String url="http://programchi.ir"; WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl(url); myWebView.clearCache(true); myWebView.clearHistory(); vistaWeb.getSettings().setJavaScriptEnabled(true); vistaWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); myWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Toast.makeText(Mainactivity.this, url, Toast.LENGTH_SHORT).show(); if (url.endsWith(".mp4")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "video/mp4"); view.getContext().startActivity(intent); } else { view.loadUrl(url); } return true; } public void onPageFinished(WebView view, String url) { //Toast.makeText(myActivity.this, "صفحه لود شد", Toast.LENGTH_SHORT).show(); } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(myActivity.this, description, Toast.LENGTH_SHORT).show(); // خطایی اتفاق افتاد } }); } } |
در این جا ما به بررسی چند بخش مهم از webview که در بالا استفاده کردیم می پردازم.
از loadUrl برای بارگذاری وب سایت استفاده می شود و ورودی آن رشته است و باید آدرس سایت به آن داده شود.
از clearCache برای خالی سازی کش استفاده می شود اگر true باشد سبب خالی شدن آن می شود.
از clearHistory برای پاک کردن تاریخچه وب استفاده می شود و کمی با cache متفاوت است cache می شود عکس هایی , css هایی که از وب سایت می ماند ولی history یک تاریخچه است.
برای اینکه javascript سایت فعال شود نیاز داریم تا setJavaScriptEnabled برابر با true قرار دهیم.
و setJavaScriptCanOpenWindowsAutomatically اجازه میدهد تا javascript اگر خواست صفحه ای را باز کند .
از setWebViewClient هم برای بررسی بعضی موارد مثل بررسی اینکه آیا وب سایت به طور کامل لود شده است و یا هنگامی که شروع به لود شدن شد به ما پیام بده . همین کاری که ما در بالا کردیم در صورتی که خطا اتفاق بیفتد وارد onReceivedError می شود وزمانی که صفحه به طور کامل لود شد وارد onPageFinished می شود و ما یک چیزی رو بررسی کردیم که اگر اون ulr به mp4 ختم شد صفحه ای دیگر برای نمایش آن نشادن داده شود.
و یادتان نرود باید دسترسی به اینترنت را در androidManifest.xml قرار دهید (فعال سازی اینترنت در اپ اندروید)
1 2 | <uses-permission android:name="android.permission.INTERNET"> </uses-permission> |
این آموزش هم به پایان رسید.
موفق باشید.
وب سایتتون محشره، با قدرت ادامه بدید ????
ممنون با قدرت ادامه میدیم
باسلام
ممنون از سایت خوبتون.
سلام
ابتدای آموزش گفتید که ( البته این کار زیاد جالب نیست) می تونید بفرمایید چرا؟
سلام
مارکت های ایرانی از جمله کافه بازار با قرار دادن یک بخش webview در برنامه به سادگی برنامه شما را رد می کنند و اگر سایت شما responsive نباشد به درستی در webview نمایش داده نمی شود به سادگی می توان سایت را به اپلیکیشن موبایل تبدیل کرد کافی است با json و card کار کرده باشید.
موفق باشید.
یعنی اگه سایت حالت responsive باشه مشکلی نیست درسته ؟و اینکه این دو تا json و card که مطرح کردید برای وقتی هست که سایت حالت responsive نداشته باشد ؟
بله اگر در حالت responsive میشکلی نیست و در جواب به سوال دوم خیر این یک نوع طراحی متریال دیزاین است که هر بخش از سایت به صورت قسمت قسمت در آنها قرار می گیرد.
سلام
ممنون از سایت خوبتون
چرا در webview سایتی رو لود کردم ولی منوی کنار آن اجرا نمیشه …؟؟؟؟
سایت رو در پوشه ی asset قرار دادم ..
جاوا رو هم فعال کردم
سلام حتما به درستی سایت رو قرار ندادید یا JavaScript یا Css آن لود نشده است. یا در احتمال زیاد سایت Responsive نیست
با سلام اگر در مثال بالا بجای آدرس http://programchi.ir آدرس http://seeb-sorkh.com/t.html که محتوای آن نمایش یک نقشه ساده از گوگل می باشد قرار دهم و با شبیه ساز جنی موشن آنرا اجرا کنم نقشه نمایش داده نمی شود و خالی و سفید است ولی در محیط مرورگر اجرا میشود مشکل چیست راهنمائی بفرمائید.
باید از api گول استفاده کنید نه نقشه گوگل مپ در html
موفق باشید.