نمایش یک صفحه اینترنتی یا کدهای HTML (کار با WebView) و ساخت لینک، در برنامه نویسی اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب:

  1. نمایش یک صفحه اینترنتی در یک activity ، با WebView در برنامه نویسی اندروید
  2. نمایش نتیجه اجرای کد HTML در یک activity ، با WebView در برنامه نویسی اندروید
  3. تعیین اندازه نمایش فونت در WebView ، در برنامه نویسی اندروید
  4. باز شدن لینک ها، درون خود WebView، در برنامه نویسی اندروید
  5. ساخت لینک به یک آدرس اینترنتی (نمایش لیست مرورگرهای اینترنت گوشی، بعد از اشاره به لینک)، در برنامه نویسی اندروید
  6. بازگشت به آدرس اینترنتی (URL) قبلی در خود WebView، هنگام اشاره بر روی دکمه Back گوشی، در برنامه نویسی اندروید
  7. نمایش یک فایل HTML قرار گرفته در پوشه assets از پروژه اندروید، در یک WebView ، در برنامه نویسی اندروید
  8. ارسال اطلاعات با روش POST به یک صفحه اینترنتی (آدرس URL)، هنگام بارگذاری صفحه اینترنتی در WebView ، در برنامه نویسی اندروید


منبع: kelidestan.com
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش یک صفحه اینترنتی در یک activity ، با WebView در برنامه نویسی اندروید

نمایش یک صفحه اینترنتی در یک activity ، با WebView در برنامه نویسی اندروید

در این آموزش، یک برنامه اندروید می سازیم که اولین صفحه آن (activity اصلی)، یک WebView است که برای مشاهده یک صفحه اینترنتی به کار می رود.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام www.www.iran-eng.ir بسازید (نام package را برابر com.example.iran-engانتخاب کنید. نام activity اصلی را برابر Activity1 انتخاب کنید و فایل xml متناظر آن را هم، activity_activity1 انتخاب کنید).
ابتدا فایل activity_activity1.xml را باز می کنیم. این فایل، به صورت گرافیکی، همانند شکل زیر می باشد :

android-123.jpg
TextView موجود در فایل xml را حذف می کنیم و سپس، مطابق گزینه های مشخص شده در شکل بالا، یک WebView را به درون فایل xml وارد می کنیم. شکل حاصل، به صورت زیر خواهد بود :

android-124.jpg

WebView را بزرگتر می کنیم (با کشیدن مرزهای آن) :

android-125.jpg

در properties مربوط به TextView ، نگاه می کنیم تا ببینیم id مربوط به TextView چیست :


android-126.png

بنابراین id مربوط به TextView ، برابر webView1 می باشد.

خوب، اکنون فایل Activity1.java که همان activity اصلی می باشد را باز می کنیم. کدهای آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.example.iran-eng[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Activity1 [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_activity1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]activity1[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدها را به صورت زیر تغییر می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.example.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.webkit.WebView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Activity1 [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]private[/B] WebView webView[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_activity1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setJavaScriptEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setLoadWithOverviewMode[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setUseWideViewPort[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBuiltInZoomControls[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]loadUrl[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#0000FF].com/android/android_application.php"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]activity1[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
بخش هایی که افزوده شده است را به ترتیب در زیر می نویسیم تا آنها را متوجه بشوید :

بخش اول :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]import[/B] [COLOR=#006699]android.webkit.WebView[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بخش دوم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]private[/B] WebView webView[COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بخش سوم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setJavaScriptEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setLoadWithOverviewMode[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setUseWideViewPort[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBuiltInZoomControls[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]loadUrl[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#0000FF].com/android/android_application.php"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، آدرس اینترنتی http://www.www.www.iran-eng.ir/android/android_application.php را به عنوان صفحه اینترنتی مورد نظرمان تعیین کرده ایم که هنگام اجرا شدن برنامه اندروید، درون WebView نمایش داده خواهد شد.

در مرحله آخر، فایل AndroidManifest.xml را باز می کنیم. این فایل دارای کدهای زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.example.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#0000FF]"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"17"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.example.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#0000FF].Activity1"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
باید خط زیر را در میان کدهای فایل AndroidManifest.xml قرار بدهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.INTERNET"[/COLOR] [COLOR=#339933]/>[/COLOR][/FONT]
[/FONT][/COLOR]
این خط از کدها، اجازه دسترسی به اینترنت را می دهد و اگر شما آن را ننویسید، عملا برنامه اندروید قادر نخواهد بود که به اینترنت متصل شود (این اجازه به برنامه اندروید داده نمی شود).

پس از افزودن این کد، کدهای فایل AndroidManifest.xml به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.example.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#0000FF]"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"17"[/COLOR] [COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.INTERNET"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.example.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#0000FF].Activity1"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
حالا اگر برنامه مورد نظر را اجرا کنید، برنامه به اینترنت متصل شده و صفحه اینترنتی http://www.www.www.iran-eng.ir/android/android_application.php را نمایش می دهد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش نتیجه اجرای کد HTML در یک activity ، با WebView در برنامه نویسی اندروید

نمایش نتیجه اجرای کد HTML در یک activity ، با WebView در برنامه نویسی اندروید

در این آموزش، یک برنامه اندروید می سازیم که اولین صفحه آن (activity اصلی)، یک WebView است که برای مشاهده نتیجه اجرای یک سری کد HTML به کار می رود. دقت کنید که هیچ فایلی برای کدهای HTML ، به کار نخواهیم برد و کدهای HTML را درون خود فایل java مربوط به activity می نویسیم.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام iran-eng.com_WebView_HTML می سازیم (نام package را برابر com.iran-eng.webview_html قرار می دهیم. نام activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم، activity_main قرار می دهیم).
ابتدا فایل activity_main.xml را باز می کنیم. این فایل، به صورت گرافیکی، همانند شکل زیر می باشد :

android-136.jpg

TextView موجود در فایل xml را حذف می کنیم و سپس، مطابق گزینه های مشخص شده در شکل زیر، یک WebView را به درون فایل xml وارد می کنیم :

android-137.jpg

شکل حاصل، به صورت زیر خواهد بود :

android-138.jpg

WebView را بزرگتر می کنیم (با کشیدن مرزهای آن) :


android-139.jpg

در properties مربوط به TextView ، نگاه می کنیم تا ببینیم id مربوط به TextView چیست :

android-140.png

بنابراین id مربوط به TextView ، برابر webView1 می باشد.

خوب، اکنون فایل MainActivity.java که همان activity اصلی می باشد را باز می کنیم. کدهای آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.webview_html[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR]
[/FONT]
[/FONT][/COLOR]
کدها را به صورت زیر تغییر می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.webview_html[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.webkit.WebView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                WebView webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#003399]String[/COLOR] html_code [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"<html><body>some <b>text<b>. <p>this is a paragraph.</p></body></html>"[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]loadData[/COLOR][COLOR=#009900]([/COLOR]html_code, [COLOR=#0000FF]"text/html"[/COLOR], [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کد HTML را در رشته ای با نام html_code ذخیره کرده ایم و سپس آن را در WebView اجرا کرده ایم.

برنامه اندروید آماده است و می توانید آن را به شیوه دلخواه خود، اجرا کنید و نتیجه را ببینید.

با اجرای برنامه اندروید، بر روی یک گوشی، صفحه زیر نمایش داده می شود :

android-141.jpg

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :
 

پیوست ها

  • 122.zip
    658.4 کیلوبایت · بازدیدها: 0
  • 123.rar
    179.1 کیلوبایت · بازدیدها: 0

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تعیین اندازه نمایش فونت در WebView ، در برنامه نویسی اندروید

تعیین اندازه نمایش فونت در WebView ، در برنامه نویسی اندروید

هنگامی که یک صفحه HTML را درون WebView نمایش بدهیم، می توانیم معیاری برای اندازه نمایش فونت های متن تعیین کنیم. نحوه تعیین این معیار، به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]WebView webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setDefaultFontSize[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای بالا، برای یک WebView با id برابر webView1 نوشته شده است. در کد بالا، عدد 50 را انتخاب کرده ایم، برای کوچکتر یا بزرگتر نمایش دادن فونت ها در WebView ، باید این عدد را مطابق میل خود، تغییر بدهید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
باز شدن لینک ها، درون خود WebView، در برنامه نویسی اندروید

باز شدن لینک ها، درون خود WebView، در برنامه نویسی اندروید

همان طور که می دانید، اگر یک صفحه از اینترنت را با یک WebView نمایش بدهیم، آنگاه چنانچه کاربر بر روی یک لینک در آن صفحه، اشاره کند، لینک در خود WebView نمایش داده نمی شود، بلکه لیستی از برنامه های مرورگر اینترنت گوشی (یا به طور کلی، همه برنامه هایی که برای باز کردن لینک در نظر گرفته شده اند) نمایش داده خواهد شد که کاربر باید یکی را انتخاب کند تا لینک توسط آن مرورگر اینترنت، باز شود (صفحه اینترنتی مقصد نمایش داده شود). برای اینکه تعیین کنیم، لینک درون خود WebView باز شود، باید کدهای زیر را برای WebView بنویسیم (id برای WebView را برابر webview1 فرض کرده ایم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]WebView myWebView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webview1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]setWebViewClient[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] WebViewClient[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
پس از استفاده از کد بالا، تمامی لینک ها درون خود WebView باز می شوند.

بنابراین، کدهای لازم برای WebView می تواند به صورت کلی زیر باشد (برخی گزینه ها را به دلخواه اضافه کرده ایم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]WebView myWebView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webview1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]setWebViewClient[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] WebViewClient[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setJavaScriptEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setLoadWithOverviewMode[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setUseWideViewPort[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBuiltInZoomControls[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
myWebView.[COLOR=#006633]loadUrl[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.www.www.iran-eng.ir/android/index.php"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای بالا برای یک WebView است که در فایل xml تعریف شده باشد و id آن برابر webview1 باشد.همچنین همیشه به خاطر داشته باشید که هنگام رد و بدل کردن اطلاعات بین برنامه اندروید و اینترنت، باید اجازه دسترسی به اینترنت را در فایل AndroidManifest.xml پروژه اندروید، ذکر کنیم، یعنی باید کدهای زیر را در فایل AndroidManifest.xml پروژه اندروید بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.INTERNET"[/COLOR] [COLOR=#339933]/>[/COLOR][/FONT]
[/FONT][/COLOR]
محل قرارگیری این کد در فایل AndroidManifest.xml را می توانید از کدهای زیر (به صورت یک مثال) متوجه بشوید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.INTERNET"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com.NewActiviity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_new_activiity"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت لینک به یک آدرس اینترنتی (نمایش لیست مرورگرهای اینترنت گوشی، بعد از اشاره به لینک)، در برنامه نویسی اندروید

ساخت لینک به یک آدرس اینترنتی (نمایش لیست مرورگرهای اینترنت گوشی، بعد از اشاره به لینک)، در برنامه نویسی اندروید

فرض کنید که بخواهیم به یک آدرس اینترنتی (مثلا سایت گوگل به آدرس اینترنتی http://www.google.com)، یک لینک بدهیم، برای این منظور باید از کدهای زیر استفاده کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent browserIntent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Intent.[COLOR=#006633]ACTION_VIEW[/COLOR], Uri.[COLOR=#006633]parse[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.google.com"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]browserIntent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
اگر بخواهیم لینک، توسط یک دکمه (Button) ساخته شود، می توانیم آن کدها را به صورت زیر برای دکمه (Button) به کار ببریم (فرض کرده ایم که id دکمه برابر button1 می باشد) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                          
    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        Intent browserIntent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Intent.[COLOR=#006633]ACTION_VIEW[/COLOR], Uri.[COLOR=#006633]parse[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.google.com"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        startActivity[COLOR=#009900]([/COLOR]browserIntent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
پس از اشاره بر روی دکمه (Button)، لیستی از مرورگرهای اینترنت گوشی نمایش داده می شود که کاربر می تواند مرورگر اینترنت دلخواه خود را انتخاب کند تا آن آدرس اینترنتی، در مرورگر باز شود.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
بازگشت به آدرس اینترنتی (URL) قبلی در خود WebView، هنگام اشاره بر روی دکمه Back گوشی، در برنامه نویسی اندروید

بازگشت به آدرس اینترنتی (URL) قبلی در خود WebView، هنگام اشاره بر روی دکمه Back گوشی، در برنامه نویسی اندروید

زمانی که ما بر روی دکمه Back گوشی اشاره می کنیم، به طور پیش فرض، از Activity فعلی در برنامه اندروید، خارج شده و به Activity قبل تر می رویم. اما این عملکرد، برای هنگامی که یک WebView در Activity داشته باشیم، مطلوب نیست. مثلا فرض کنید که تعیین کرده باشیم که لینک ها درون خود WebView باز شوند (نمایش داده شوند)، بنابراین ممکن است که کاربر چند بار بر روی لینک های مختلف اشاره کرده باشد و اکنون بخواهد که برای برگشتن به آدرس های اینترنتی (URL) قبلی در WebView ، از دکمه Back گوشی استفاده کند. بنابراین در این مبحث، کدهای لازم برای تعیین WebView، هنگام اشاره بر روی دکمه Back گوشی را شرح خواهیم داد.

قبل از هر چیز، اجازه دسترسی به اینترنت را باید در فایل AndroidManifest.xml از پروژه اندروید ذکر کنیم. برای این منظور، باید کد زیر را در فایل AndroidManifest.xml بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.INTERNET"[/COLOR] [COLOR=#339933]/>[/COLOR][/FONT]
[/FONT][/COLOR]
محل قرارگیری کد بالا در فایل AndroidManifest.xml را می توانید در کدهای زیر مشاهده کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.www.www.iran-eng.ir"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.INTERNET"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
همچنین در فایل xml متناظر با Activity ، باید یک عنصر WebView تعریف کنیم. به عنوان مثال، کدهای فایل xml را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".MainActivity"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]WebView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/webView1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، عنصر WebView ، کل صفحه را می پوشاند.

خوب اکنون کدهای فایل java مربوط به Activity را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#006699].com[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.KeyEvent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.webkit.WebView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.webkit.WebViewClient[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] WebView webView[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]setWebViewClient[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] WebViewClient[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setJavaScriptEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setLoadWithOverviewMode[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setUseWideViewPort[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBuiltInZoomControls[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]loadUrl[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#0000FF][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com/android/index.php"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
    [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onKeyDown[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] keyCode, [COLOR=#003399]KeyEvent[/COLOR] event[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]if[/B][COLOR=#009900]([/COLOR]event.[COLOR=#006633]getAction[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]==[/COLOR] [COLOR=#003399]KeyEvent[/COLOR].[COLOR=#006633]ACTION_DOWN[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
            [B]switch[/B][COLOR=#009900]([/COLOR]keyCode[COLOR=#009900])[/COLOR]
            [COLOR=#009900]{[/COLOR]
            [B]case[/B] [COLOR=#003399]KeyEvent[/COLOR].[COLOR=#006633]KEYCODE_BACK[/COLOR][COLOR=#339933]:[/COLOR]
                [B]if[/B][COLOR=#009900]([/COLOR]webView.[COLOR=#006633]canGoBack[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                        webView.[COLOR=#006633]goBack[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
                    finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR]

        [COLOR=#009900]}[/COLOR]
        [B]return[/B] [B]super[/B].[COLOR=#006633]onKeyDown[/COLOR][COLOR=#009900]([/COLOR]keyCode, event[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]


[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
با خط زیر از کدها، تعیین کرده ایم که لینک ها درون خود عنصر WebView باز شوند (نمایش داده شوند)، زیرا در غیر این صورت، بازگشت به آدرس اینترنتی (URL) قبلی در خود WebView ، معنایی ندارد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]webView.[COLOR=#006633]setWebViewClient[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] WebViewClient[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کدهایی هم که باعث می شوند، وقتی بر روی دکمه Back اشاره می کنیم، به آدرس اینترنتی قبلی در خود WebView برویم (نه خروج از Activity)، کدهای زیر می باشند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]        @Override
    [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onKeyDown[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] keyCode, [COLOR=#003399]KeyEvent[/COLOR] event[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]if[/B][COLOR=#009900]([/COLOR]event.[COLOR=#006633]getAction[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]==[/COLOR] [COLOR=#003399]KeyEvent[/COLOR].[COLOR=#006633]ACTION_DOWN[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
            [B]switch[/B][COLOR=#009900]([/COLOR]keyCode[COLOR=#009900])[/COLOR]
            [COLOR=#009900]{[/COLOR]
            [B]case[/B] [COLOR=#003399]KeyEvent[/COLOR].[COLOR=#006633]KEYCODE_BACK[/COLOR][COLOR=#339933]:[/COLOR]
                [B]if[/B][COLOR=#009900]([/COLOR]webView.[COLOR=#006633]canGoBack[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                        webView.[COLOR=#006633]goBack[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
                    finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR]

        [COLOR=#009900]}[/COLOR]
        [B]return[/B] [B]super[/B].[COLOR=#006633]onKeyDown[/COLOR][COLOR=#009900]([/COLOR]keyCode, event[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین با این نوع کدنویسی برای WebView ، با اشاره بر روی دکمه Back گوشی ، به آدرس اینترنتی قبلی در WebView می رویم. البته اگر آدرس قبلی دیگر نباشد (یعنی به اولین آدرس تعیین شده برای WebView برسیم)، از Activity خارج خواهد شد و به Activity قبلی بر می گردد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش یک فایل HTML قرار گرفته در پوشه assets از پروژه اندروید، در یک WebView ، در برنامه نویسی اندروید

نمایش یک فایل HTML قرار گرفته در پوشه assets از پروژه اندروید، در یک WebView ، در برنامه نویسی اندروید

فرض کنید که یک فایل HTML داریم و قصد داریم که در بخشی از برنامه اندروید، آن را در یک WebView نمایش بدهیم. برای این منظور، قبل از هر چیز، باید فایل HTML را درون پوشه assets از پروژه اندروید قرار بدهیم (اگر پوشه assets در پروژه اندروید وجود ندارد، آن را بسازید) :

623.png

سپس کدهای WebView را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] file_path [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"file:///android_asset/myFolder/myFile.html"[/COLOR][COLOR=#339933];[/COLOR]
                
WebView webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setJavaScriptEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setLoadWithOverviewMode[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setUseWideViewPort[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBuiltInZoomControls[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]loadUrl[/COLOR][COLOR=#009900]([/COLOR]file_path[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای بالا، id مربوط به WebView را برابر webView1 در نظر گرفته ایم. همچنین مسیر فایل HTML مورد نظر در پوشه assets را با خط زیر از کدها مشخص کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] file_path [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"file:///android_asset/myFolder/myFile.html"[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین، مسیر فوق، برای زمانی است که درون پوشه assets از پروژه اندروید، یک پوشه با نام myFolder ساخته باشیم و درون آن پوشه، فایل HTML مورد نظرمان که دارای نام myFile.html است، قرار گرفته باشد (این مسیر را مطابق مسیر فایل مورد نظرتان که درون پوشه assets قرار گرفته است، تغییر بدهید).

در کدها، ویژگی هایی را برای WebView در نظر گرفته ایم که در صورت تمایل، می توانید آنها را تغییر بدهید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ارسال اطلاعات با روش POST به یک صفحه اینترنتی (آدرس URL)، هنگام بارگذاری صفحه اینترنتی در WebView ، در برنامه نویسی اندروید

ارسال اطلاعات با روش POST به یک صفحه اینترنتی (آدرس URL)، هنگام بارگذاری صفحه اینترنتی در WebView ، در برنامه نویسی اندروید

در اموزش های قبلی، چگونگی نمایش یک صفحه اینترنتی (آدرس URL) در WebView را شرح دادیم. در مبحث مورد نظر، تنها آدرس URL صفحه ذکر میشد و نتیجه اجرای صفحه را در WebView مشاهده می کردیم. اما گاهی نیاز داریم که اطلاعاتی را به صفحه اینترنتی مورد نظر ارسال کنیم. معمولا دو روش GET و POST برای ارسال اطلاعات به صفحات اینترنتی به کار می روند. در روش GET ، اطلاعات در انتهای خود آدرس URL صفحه ذکر می شوند، بنابراین با همان کد قابل اجرا می باشد. اما در روش POST ، اطلاعات در آدرس URL ذکر نمی شوند و بنابراین باید کدهای متفاوتی را برای ارسال اطلاعات با استفاده از روش POST ، به کار ببریم. در ادامه شیوه کدنویسی برای ارسال اطلاعات با روش POST را شرح می دهیم.

برای این مبحث آموزشی، از آدرس اینترنتی زیر استفاده می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]http://www.[/FONT][/FONT][/COLOR][COLOR=#000000][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace].com/fixed-url/iran-eng-2.php[/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، صفحه اینترنتی مورد نظر، در سایت کلیدستان (http://www.iran-eng.com) قرار دارد و آن را در پوشه ای (folder) به نام fixed-url قرار داده ایم. نام این پوشه، به این دلیل برایر fixed-url انتخاب شده است، که در آینده حواسمان باشد که نباید آدرس URL صفحات موجود در این پوشه، تغییر کند، بنابراین شما با خیال راحت و بدون نگرانی از تغییر آدرس URL و یا محتوای صفحات، می توانید از آنها استفاده کنید.

در صفحه iran-eng-2.php ، کدهای PHP زیر را می نویسیم (البته ممکن است برای شما کدنویسی صفحه مهم نباشد و فقط بخواهید نتیجه را تست کنید، در این صورت فقط توضیحاتی که در ادامه گفته می شود را بخوانید تا پارامترهایی که با روش POST باید به صفحه بفرستیم را متوجه شوید) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]php
[B]if[/B][COLOR=#009900]([/COLOR]isset[COLOR=#009900]([/COLOR]$_POST[COLOR=#009900][[/COLOR][COLOR=#0000FF]'country'[/COLOR][COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]&&[/COLOR] isset[COLOR=#009900]([/COLOR]$_POST[COLOR=#009900][[/COLOR][COLOR=#0000FF]'age'[/COLOR][COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    $country [COLOR=#339933]=[/COLOR] $_POST[COLOR=#009900][[/COLOR][COLOR=#0000FF]'country'[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]
    $country [COLOR=#339933]=[/COLOR] htmlspecialchars[COLOR=#009900]([/COLOR]$country[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    $country [COLOR=#339933]=[/COLOR] strip_tags[COLOR=#009900]([/COLOR]$country[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
    $age [COLOR=#339933]=[/COLOR] $_POST[COLOR=#009900][[/COLOR][COLOR=#0000FF]'age'[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]
    $age [COLOR=#339933]=[/COLOR] htmlspecialchars[COLOR=#009900]([/COLOR]$age[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    $age [COLOR=#339933]=[/COLOR] strip_tags[COLOR=#009900]([/COLOR]$age[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
    echo [COLOR=#0000FF]"country : "[/COLOR].$country.[COLOR=#0000FF]" --- age : "[/COLOR].$age.[COLOR=#0000FF]""[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]
[COLOR=#339933]?>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین کدهای PHP صفحه، ابتدا چک می کنند که مقادیری برای دو متغیر country و age ، با روش POST ، به صفحه ارسال شده باشد (اگر ارسال نشده باشد، هیچ کد دیگری اجرا نمی شود و خروجی به صورت صفحه خالی خواهد بود). سپس در صورتی که برای هر دو متغیر، مقدار به صفحه ارسال شده باشد، مقادیر دریافت شده و در دو متغیر با همان نام ها، ذخیره می شود. سپس یک عبارت که در آن، مقدار متغیرها نیز وجود دارد، در خروجی چاپ می شود.

اگر در کدها دقت کنید، دو تابع htmlspecialchars و strip_tags را بر روی مقادیر دریافت شده، اعمال کرده ایم. این عمل برای ایجاد امنیت بیشتر است زیرا ممکن است که یک کاربر، به عنوان هکر، تعدادی کد مخرب را در میان ورودی ها قرار بدهد. در این مورد، در مبحثی دیگر صحبت خواهیم کرد، اما بد نیست به طور مختصر بگوییم که تابع htmlspecialchars ، باعث می شود که هنگام چاپ یک عبارت در خروجی صفحه، اگر تگ های (tags) مربوط به HTML در آن عبارت وجود دارند، به جای اجرا شدن به عنوان کد، تنها در خروجی نمایش داده شوند. همچنین تابع strip_tags ، برای حذف تگ های HTML و PHP موجود در یک عبارت به کار می رود. اگر در آینده بخش های امنیتی بیشتری به این کدها اضافه کنیم، شما مطمئن باشید که در خروجی صفحات تاثیری نخواهد داشت و با اطمینان می توانید از این صفحات استفاده کنید (همان طور که گفتیم، آدرس URL آنها همیشه ثابت خواهد بود و عملکرد آنها تغییری نخواهد کرد و فقط ممکن است صلاح بدانیم که بخشی از کدهای امنیتی را در اینجا نمایش ندهیم).

خوب اکنون به سراغ کدنویسی برنامه اندروید می رویم.

کدهای Activity می تواند مشابه کد زیر باشد (کد زیر با این فرض است که در فایل xml متناظر با Activity ، یک عنصر WebView با id برابر webView1 تعریف شده است. همچنین ذکر اجازه دسترسی به اینترنت در فایل AndroidManifest.xml از پروژه اندروید فراموش نشود) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.www.www.iran-eng.ir[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]org.apache.http.util.EncodingUtils[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.webkit.WebView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.webkit.WebViewClient[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]private[/B] WebView webView[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]         
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                webView [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]setWebViewClient[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] WebViewClient[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setJavaScriptEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setLoadWithOverviewMode[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setUseWideViewPort[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]getSettings[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBuiltInZoomControls[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#003399]String[/COLOR] postData [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"country=iran&age=20"[/COLOR][COLOR=#339933];[/COLOR]
                webView.[COLOR=#006633]postUrl[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#006699][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com/fixed-url/[/COLOR][/FONT][/FONT][/COLOR][COLOR=#006699][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]-2.php"[/COLOR], EncodingUtils.[COLOR=#006633]getBytes[/COLOR][COLOR=#009900]([/COLOR]postData, [COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
که بخش مهم آن، کد زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] postData [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"country=iran&age=20"[/COLOR][COLOR=#339933];[/COLOR]
webView.[COLOR=#006633]postUrl[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"http://www.[/COLOR][/FONT][/FONT][/COLOR][COLOR=#006699][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF].com/fixed-url/[/COLOR][/FONT][/FONT][/COLOR][COLOR=#006699][FONT=monospace]iran-eng[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]-2.php"[/COLOR], EncodingUtils.[COLOR=#006633]getBytes[/COLOR][COLOR=#009900]([/COLOR]postData, [COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در پرانتز مربوط به روش postUrl ، آدرس URL صفحه اینترنتی را ذکر کرده ایم. اطلاعاتی که با روش POST به آدرس URL ارسال می شوند نیز در متغیر postData که از جنس رشته (String) می باشد، ذکر شده اند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]country[COLOR=#339933]=[/COLOR]iran[COLOR=#339933]&[/COLOR]age[COLOR=#339933]=[/COLOR][COLOR=#CC66CC]20[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، برای جداسازی مقادیر (پارامترهای مختلف) از هم، از علامت & استفاده شده است. یعنی اگر 10 تا پارامتر هم داشتیم، باید تک تک آنها را با علامت & از هم جدا کنیم تا قابل تشخیص باشند. برای هر پارامتر، ابتدا نام آن ذکر شده و سپس یک علامت = و در آخر هم مقدار انتخابی ما برای آن پارامتر نوشته می شود. مثلا با عبارت فوق، مقدار پارامتر country را برابر iran و مقدار پارامتر age را برابر 20 انتخاب کرده ایم. پس این مقادیر با روش POST به آدرس URL مورد نظر ارسال می شوند.

با اجرای کد مورد نظر، خروجی زیر در WebView نمایش داده می شود (ممکن است فونت متن خیلی کوچک باشد، پس در WebView کمی zoom کنید تا نتیجه را بهتر ببینید) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]country [COLOR=#339933]:[/COLOR] iran [COLOR=#339933]---[/COLOR] age [COLOR=#339933]:[/COLOR] [COLOR=#CC66CC]20[/COLOR][/FONT]
[/FONT][/COLOR]
نکته :

برخی از برنامه نویسان (در سایت های خارجی) بیان کرده اند که ممکن است روش فوق برای برخی از سایت ها به درستی عمل نکند و راه حل آن را هم جاگزینی عبارت utf-8 با عبارت BASE64 ذکر کرده اند. باید دقت داشته باشید که این جایگزینی باعث می شود که اگر در مقادیر، کاراکترهای فارسی بنویسیم، آنگاه این کاراکترها به درستی نمایش داده نشوند (زیرا حتما باید utf-8 ذکر شود). بنابراین بر حسب اینکه با اطلاعات شامل کاراکترهای فارسی کار می کنید یا خیر، این نکته را هم در نظر داشته باشید.
 
بالا