آموزش webview + html در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش webview + html در برنامه نویسی اندروید می پردازیم قبلا آموزشی در مورد webview ایجاد کرده بودیم ولی تنها به بارگذاری سایت در آن بسنده کرده بودیم ولی در اینبار یاد می گیرد چه طور یک فایل html که در پوشه assets قرار داده می شود چگونه در webview بارگذاری شود با ما همراه باشید.
قبلا آموزش ایجاد پوشه assets را قرار داده بودیم پس در اینجا دیگر به آن نمی پردازیم شما می توانید به آموزش های قبلی مراجعه کنید.
بعد از ایجاد پوشه assets فایل html را که می خواهید برای شما در webview نمایش داده شود را در پوشه assets قرار دهید ما یک نمونه ساده از html را در ادامه برای شما قرار میدهیم.
1 2 3 4 5 6 7 8 9 10 11 | <!doctype html> <html> <head> <meta charset="utf-8"> <title>Android WebView By Programchi.ir</title> </head> <body> <h1>این یک تست است !</h1> این یک متن تیست است و این آموزش در سایت programchi.ir ایجاد شده است. </body> </html> |
این فایل را به نام sample.html ذخیره کنید و در پوشه assets قرار دهید.
حالا برویم به سراغ کد برنامه یک فایل به نام activity_main.xml ایجاد کنید و (این فایل باید در res/layout ایجاد شود) و سپس کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout> |
در layout خودمان فقط یک WebView قرار داده ایم.
حالا یک فایل به نام MainActivtiy.java ایجاد کنید (کد اکتیویتی ما می شود) و کد زیر را در آن قرار دهید.
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 41 42 43 44 45 46 47 48 49 50 51 52 | package ir.programchi; import android.content.res.AssetManager; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebSettings; import android.webkit.WebView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringWriter; import java.io.Writer; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView htmlWebView = (WebView)findViewById(R.id.webView); WebSettings webSetting = htmlWebView.getSettings(); webSetting.setJavaScriptEnabled(true); webSetting.setDisplayZoomControls(true); String htmlFilename = "sample.html"; AssetManager mgr = getBaseContext().getAssets(); try { InputStream in = mgr.open(htmlFilename, AssetManager.ACCESS_BUFFER); String htmlContentInStringFormat = StreamToString(in); in.close(); htmlWebView.loadDataWithBaseURL(null, htmlContentInStringFormat, "text/html", "utf-8", null); } catch (IOException e) { e.printStackTrace(); } } public static String StreamToString(InputStream in) throws IOException { if(in == null) { return ""; } Writer writer = new StringWriter(); char[] buffer = new char[1024]; try { Reader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); int n; while ((n = reader.read(buffer)) != -1) { writer.write(buffer, 0, n); } } finally { } return writer.toString(); } } |
قبلتر webview را آموزش داده بودیم برای اینکه اطلاعاتان تکمیل شود پیشنهاد می کنم آموزش قبلی را مطالعه کنید در ابتدا view مربوط به WebView را به دست آوردیم سپس جاوااسکریپ را فعال کردیم همینطور امکان zoom کردن رو برای اینکه مسیر فایل ما که در پوشه assets وجود دارد را به دست بیاریم از AssetManager استفاده کردیم و مثل همیشه برای اینکه آن فایل را بخوانیم از inputstream استفاده کردیم شاید کد بالا کمی برای شما پیچیده باشد.
برای اینکه بخواهید فایل html را به سادگی اما کمی آروم لود کنید می تونید از کد زیر استفاده کنید.
1 | htmlWebView.loadUrl("file:///android_asset/sample.html"); |
به سادگی دید که میشه کد یک خطی زیر را با کد بالا جایگزین کرد اما کدی که در بالا نوشته شده است خیلی سریع تر فایل های حجیم را بارگذاری کنید.
این آموزش هم به پایان رسید.
موفق و موید باشید.
سلام،ممنون از زحمات شما
اگر صفحه سایت ما که توی وب ویو نمایش داده میشه یه پاسخی رو برگردونه
مثلا echo “ok” چطوری میشه اونو از وب ویو گرفت و به برنامه منتقل کرد برای آنالیز؟
سلام شما می تونید یک کلاس html ایجاد کنید مثلا check_class سپس با ویژگی css آن را hide کنید و مقدار اون را پارس کردن بخونید یعنی یه بخش خواصی از html را parse کنید .
موفق و موید باشید.
ممنونم از جوابتون اما متوجه عرایض بنده نشدید
صفحه مورد نظر روی سرور هستش و جوابی هستش که از درگاه پرداخت بانک میاد
چطوی جواب اونو به برنامه برای انالیز منتقل کنم؟(ازطریق وب ویو)
ببینید باید بفرمایید که مقداری که برگشت داده میشه از چه نوعی است فکر می کنم باید json باشه ولی در کل اگه می خواهید کل اون webview رو به صورت string در بیارید تا از توی آن string جواب بکشید بیرون می تونید از کد زیر استفاده کنید در صورتی که مقدار برگشتی به صورت json است بفرمایید تا برایتان قرار دهم
سلام
من یه برنامه نوشام میخوام که وقتی برنامه با نت وصل نمیشه یه صفحه از تو گوشی لود بشه و در همین حال میخوام که بعضی لینک ها رو که توی صفحات هست بعد کلیک کردن توی مرورگر پیشفرض گوشی باز کنه
از طرفی میخوام به مرور لینک های دانلود جدیدی اضافه کنم
مشکلم اینه وقتی از test.setWebViewClient(new WebViewClient استفاده میکنم دیگه وقتی رو لینک ها کلیک میکنم به مرورگر اصلی گوشی ارجاع نمیده
و وقتی از این استفاده نمیکنم نمیتونم در صورت قطعی نت از تو گوشی فایل اچ تی ام ال رو لود کنم
لطفا راهنمایی کنید
ممنون