پاسخ به رویداد های WebVeiw
راز موفقیت بسیاری از اپلیکیشن ها،توانایی آن ها در ارتباط و تعامل با منابع داده ای خارجی یا Remote است.با توجه به اهمیت این نکته،شمار متعددی API و سرویس های وب (Web Service) برای ساخت و توسعه اپلیکیشن ها در دسترس است که به طور تقریبی می توان در تمام ابعاد گوناگون،از پیش بینی وضع هوا گرفته تا کنترل تراکنش های بانکی هر شخص،از آن ها استفاده کرد.اندروید نیز به این منظور به تجهیزات قدرتمندی مجهز است،از جمله ساختار وب پایه ای که گوگل به خاطر آن مشهور است و مجموعه کارآمد از انواع ابزارهای کاربردی ومفید برای ارتباط با جهان خارج که در این قسمت آموزش به صورت کامل با نحوه کار و استفاده از آنها آشنا شده و خواهیم توانست اپلیکیشن های جذاب و کاربردی ایجاد کنیم.
عناوین کار با شبکه و ارتباطات در برنامه نویسی اندروید:
1.پاسخ به رویداد های WebVeiw
2.دسترسی به وب ویو با استفاده از جاوااسکریپت
3.دانلود و نمایش یک عکس از اینترنت
4.دانلود و نمایش بیش از یک عکس از اینترنت
5.دانلود و نمایش یک فایل متنی
6.سترسی به API های REST
7.ترجمه عبارت های JSON
8.ترجمه XML
9.انتقال داده از طریق NFC
10.برنامه نویسی سوکت
11.ساخت برنامه هواشناسی
برای شروع کار ابتدا یک پروژه جدید ایجاد میکنم و کدهای زیر رو بهش اضافه میکنم.در داخل این کد ابتدا یک WebView ایجاد کردیم،سپس با استفاده از دستور LoadUrl آدرس مدنظرمون رو بهش اضافه کردیم،از دستور setWebViewClient متدی را که با نام mClient ایجاد کردیم رو بهش اضافه میکنم. در واقع این متد وظیفه داره رفتارهای وب ویو رو بررسی کنه.دستور shouldOverrideUrlLoading بر اساس url ارسالی تعیین می کند که آیا محتوای آن باگذاری شده است یا خیر.دستور getAuthority بخش HostName از Url را برمیگرداند و سپس آن را با www.google.com مقایسه میکند.درصورتی که با یکدیگر برابر بودند،با برگرداندن مقدار falseبه webView اجازه می هیم که محتویات لینک بارگذاری شود.در غیر این صورت پس از صدور پیامی به کاربر،با برگرداندن مقدار true مشخص می کنیم که برنامه به این url رسیدگی کند و webview در این قضیه دخالتی نکند.
import android.app.Activity;
import android.os.Bundle;
import android.net.Uri;
import android.text.TextUtils;
import android.view.Menu;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//ایجاد یک وب ویو
WebView webview = new WebView(this);
webview.getSettings().setJavaScriptEnabled(true);
//افزودن یک کلاینت به وب ویو
webview.setWebViewClient(mClient);
webview.loadUrl("http://www.appinapps.com");
setContentView(webview);
}
//ایجاد یک متد برای بررسی رفتارهای وب ویو
private WebViewClient mClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri request = Uri.parse(url);
//مقایسه آدرس ورودی با آدرس مدنظر
if(TextUtils.equals(request.getAuthority(), "www.google.com")) {
//Allow the load
return false;
}
//چاپ یک پیام در صورت صحیح نبود آدرس
Toast.makeText(MainActivity.this, "متاسفانه آدرس ورودی صحیح نیست", Toast.LENGTH_SHORT).show();
return true;
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}