نمایش یک صفحه اینترنتی در یک activity ، با WebView در برنامه نویسی اندروید
در این آموزش، یک برنامه اندروید می سازیم که اولین صفحه آن (activity اصلی)، یک WebView است که برای مشاهده یک صفحه اینترنتی به کار می رود.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com بسازید (نام package را برابر com.example.kelidestan انتخاب کنید. نام activity اصلی را برابر Activity1 انتخاب کنید و فایل xml متناظر آن را هم، activity_activity1 انتخاب کنید).
ابتدا فایل activity_activity1.xml را باز می کنیم. این فایل، به صورت گرافیکی، همانند شکل زیر می باشد :
TextView موجود در فایل xml را حذف می کنیم و سپس، مطابق گزینه های مشخص شده در شکل بالا، یک WebView را به درون فایل xml وارد می کنیم. شکل حاصل، به صورت زیر خواهد بود :
WebView را بزرگتر می کنیم (با کشیدن مرزهای آن) :
در properties مربوط به WebView ، نگاه می کنیم تا ببینیم id مربوط به WebView چیست :
بنابراین id مربوط به WebView ، برابر webView1 می باشد.
خوب، اکنون فایل Activity1.java که همان activity اصلی می باشد را باز می کنیم. کدهای آن به صورت زیر می باشد :
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity1, menu);
return true;
}
}
کدها را به صورت زیر تغییر می دهیم :
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;
public class Activity1 extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity1);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl("http://www.kelidestan.com/android/android_application.php");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity1, menu);
return true;
}
}
بخش هایی که افزوده شده است را به ترتیب در زیر می نویسیم تا آنها را متوجه بشوید :
بخش اول :
بخش دوم :
بخش سوم :
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl("http://www.kelidestan.com/android/android_application.php");
همان طور که مشاهده می کنید، آدرس اینترنتی http://www.kelidestan.com/android/android_application.php را به عنوان صفحه اینترنتی مورد نظرمان تعیین کرده ایم که هنگام اجرا شدن برنامه اندروید، درون WebView نمایش داده خواهد شد.
در مرحله آخر، فایل AndroidManifest.xml را باز می کنیم. این فایل دارای کدهای زیر می باشد :
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.kelidestan"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.kelidestan.Activity1"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
باید خط زیر را در میان کدهای فایل AndroidManifest.xml قرار بدهیم :
این خط از کدها، اجازه دسترسی به اینترنت را می دهد و اگر شما آن را ننویسید، عملا برنامه اندروید قادر نخواهد بود که به اینترنت متصل شود (این اجازه به برنامه اندروید داده نمی شود).
پس از افزودن این کد، کدهای فایل AndroidManifest.xml به صورت زیر خواهد بود :
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.kelidestan"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.kelidestan.Activity1"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
حالا اگر برنامه مورد نظر را اجرا کنید، برنامه به اینترنت متصل شده و صفحه اینترنتی http://www.kelidestan.com/android/android_application.php را نمایش می دهد.
خیلی ممنون از آموزشتون من خیلی استفاده کردم تا اینجا کار
انشاالله ادامه رو هم بخونم
خدا خیرتون بده
خسته نباشید
سلام و تشکر از آموزشهای خوبتون.
من طبق آموزش شما پیش رفتم ولی سایت رو داخل پنجره WebView تو برنامه باز نمیکنه و مرورگر باز میشه و سایت رو تو اون باز میکنه
لطفا راهنمایی کنید
باتشکر
این خط کد رو باید وارد کنی که تو خود WebView باز کنه سایت رو وگرنه تو مرورگر بازش میکنه
سلام دوست عزیز. ممنون از مطالب و سایت خوبتون. میخواستم بدونم که چطوری میشه که با اشارهٔ کاربر بر روی یک دکمه، یک فایل html در برنامه، نمایش داده بشه. ممنون میشم راهنمایی کنید. خیلی ممنون
سلام.
ابتدا آموزش چگونگی نمایش یک فایل HTML قرار گرفته در پوشه assets از پروژه اندروید، در یک WebView را بخوانید :
سپس باید کد مربوط به نمایش فایل HTML ، هنگام کلیک بر روی یک دکمه (Button) اجرا شود که در این زمینه، باید کلید زیر را بخوانید :
با سلام ببخشید من کدها را دقیقا مثل این کدها وارد کرده ام اما وقتی برنامه رو اجرا میکنم ارور webpage not available رو میاره واقعا ممنون میشم کمکم بفرمایید
با سلام و ممنونم از سایت پر محتوای شما
خیلی خیلی استفاده کرده و میکنم از مطالبتون
موفق باشید
سلام
دو مورد اشتباه تایپی دارید
در properties مربوط به TextView ، نگاه می کنیم تا ببینیم id مربوط به TextView چیست :
webview باید باشه
در خط بعدیش هم همین اشتباه وجود داره.
سلام.
از تذکر شما متشکرم.
دو اشتباه مورد نظر در متن آموزش، تصحیح شدند.
با سلام وتشکر از آموزش کاملتون
میخواستم بدونم راهی وجود داره که من فقط یک خط مورد نیازمو از صفحه وب دانلود کنم...
ممنونم
با اینکه کدام رو کامل وارد کردم، مینویسه صفحه وب در دسترس نیست
سلام برای من وب سایت ها ای که http هستند رو نمایش نمیده چیکار کنم اونارو هم نمایش بده