Android üçün brauzer qurmaq. Android üçün tam hüquqlu bir brauzer yazırıq. Daxili bağlantıları izləmək üçün isteğe bağlı veb brauzer quraşdırılması

Sevgilim, mən bakalavr tələbəsiyəm. Keçən semestrdə bir layihə etməliyəm. Buna görə Android OS ilə işləyən bir veb yaratmağa qərar verdim, amma tamamilə bu tətbiq üçünəm. Buna görə kimsə bu işdə mənə kömək edə bilər. Artıq jdk, android sdk 3.0, eclipse kimi bütün lazımi vasitələri quraşdırmışam. Ancaq indi brauzer inkişafına haradan başlamalı olduğumu bilmirəm. Xahiş edirəm mənə kömək edin ... Bu layihə üçün cəmi 2 ay vaxtım var. Yəni 2 ayda mümkündür ya yox?

Brauzerinizi inkişaf etdirərkən nə demək istədiyinizə bağlıdır ...

Sıfırdan bir brauzer + işləmə mühərriki hazırlamaq çox işdir, ancaq WebViewClient istifadə edərək Androids WebView əsasında asanlıqla bir brauzer yarada və istifadəçinin brauzerlə qarşılıqlı əlaqəsini dəyişdirərək yeni bir UI yarada bilərsiniz.

Web Görünüşü, brauzerin qarşılıqlı əlaqəsini kəsmək üçün hər cür tutucuya malikdir, buna görə asanlıqla genişləndirə bilərsiniz. Məsələn, istifadəçiyə səhifələri (google fastflip kimi) çevirməyə, 3D ilə sınaq keçirməyə, göstərilən web səhifəsini OpenGL məkanında xəritələməyə icazə verə bilərsiniz (sfera brauzerində olduğu kimi) və s.

Başlanğıc nöqtəsi olaraq, Alexander Kmetekin bloguna və Android brauzerini mikroformat dəstəyi ilə əhatə edən Mosambro layihəsinə nəzər salın.

Həqiqətən böyük bir layihə kimi səslənir və buna görə də sıfırdan başlaya və yaza bilməzsiniz. Bütün hissələri necə həyata keçirmək istədiyinizə dair bir plan hazırlamalısınız, sinif diaqramlarını yazmalısınız və s. Əgər kompüter elmləri ilə məşğul olsanız, bu barədə əvvəlki semestrlərdə eşitməli idiniz.

Əvvəlcə bu layihənin mümkün olub -olmadığını özünüzdən soruşmalısınızşərhlərdən gördüyünüz kimi, insanların çoxu bu çətinliyi qiymətləndirməməyinizlə razılaşırlar!

Həqiqətən bu işin əhatə dairəsini başa düşməyinizi təklif edirəm mənbə Android -in brauzeri, sizə mürəkkəbliyi haqqında bir fikir verir.

Yaradılış əsas brauzer Android inkişaf təcrübəsi olanlar üçün bir -iki gündə edilə bilər, digərlərinin WebView -in veb səhifəni göstərmək üçün lazım olan hər şeyi təmin etdiyini söylədiyi kimi. JavaScript və digər funksiyaların doğrulanması və sonra əsas veb brauzeri olan url və go düyməsinin əsas mətn qutusunu işarələdikdən sonra bir neçə düzəliş var.

Əsl iş bütün inkişaf etmiş parametrlərdə gəlir. Böyük adamlarla rəqabət aparan bir brauzer hazırlamaq, bir neçə ay ərzində bir adam üçün bir az çətin ola bilər, ancaq işləyən şəxsi özünüz etmək çox mümkündür.Çalışın!

Android -də tam bir veb brauzeri yaratmaq üçün bir WebView istifadə edirsiniz.

Sadə kod bağlama:

WebView wv = (WebView) findViewById (R.id.webview1); wv = (WebView) findViewById (R.id.webView1); wv.loadUrl ("http://www.apsmind.com");

Android -ə əsaslanan bir smartfon alarkən, standart olaraq ən azı bir brauzer quraşdırılacaq. Ola bilər Google xrom və ya istehsalçı tərəfindən hazırlanmış başqa bir veb brauzer. Ancaq əvvəlcədən quraşdırılmış brauzer sizə uyğun gəlmirsə, digərini Play Marketdən yükləyə bilərsiniz. Cihazınızda bir neçə oxşar tətbiq varsa, onlardan birini seçmək lazımdır, bu da standart olaraq istifadə ediləcəkdir. Məqalənin qalan hissəsi bunu necə həyata keçirə biləcəyinizi izah edəcək.

Android üçün standart brauzer

Bu gün Android cihazları üçün hazırlanmış bir çox veb brauzer var. Hamısının öz üstünlükləri və mənfi cəhətləri var. Ancaq fərqlərinə baxmayaraq, hər hansı birini standart olaraq üç ilə təyin edə bilərsiniz fərqli üsullar... Onların hər biri məqalədə daha sonra ətraflı təsvir ediləcəkdir.

Metod 1: OS parametrlərini təyin etmək

Varsayılan brauzeri quraşdırmağın ən populyar və asan yolu OS -ni konfiqurasiya etməkdir. Əsas veb brauzerini qurmaq üçün aşağıdakı adımları yerinə yetirin:

    1. Ana ekrandan və ya tətbiq menyusundan smartfonunuzun parametrlərinə keçin.


    1. Maddəni açın "Tətbiqlər və bildirişlər".

    1. Xətti tapmaq üçün siyahının sonuna gedin "Əlavə parametrlər"... Bəzən siyahıda bu bölməni görə bilməzsiniz, çünki qrafikdə gizlidir "Hələ".

    1. Sonra, bir seçim seçin "Defolt Tətbiqlər".

    1. Bölmə seçin "Brauzer" Varsayılan veb brauzerini təyin etmək üçün. Mesajlar, telefon, səs girişi və daha çox.

    1. Hamısını sadalayan bir pəncərə görünəndə quraşdırılmış brauzerlər, Varsayılan olaraq təyin etmək istədiyiniz birinin yanındakı qutuyu işarələyin.


  1. İndi veb brauzerinizdən istifadə edə bilərsiniz. Bütün bağlantılar, ani mesajlaşanlar, quraşdırılmış brauzerdə daha da açılacaq.

Bu üsul həqiqətən çox sadədir, üstəlik, smartfonunuz üçün əlavə parametrlər konfiqurasiya edə bilərsiniz.

Metod 2: veb brauzerləri konfiqurasiya edin

Ayarları istifadə edərək, standart Google Chrome istisna olmaqla, hər hansı bir brauzeri standart olaraq təyin edə bilərsiniz. Bu proseduru bir neçə sadə addımda tamamlaya bilərsiniz. Məqalədə, Yandex Browser və Mozilla Firefox -un mobil versiyasını nümunə olaraq istifadə edərək, əsas veb brauzerini quraşdırmaq üçün edilməli olan bütün addımlar daha ətraflı təsvir ediləcəkdir. Digər brauzerlər üçün prosedur oxşar olacaq.

    1. Açmaq mobil versiya brauzer, sağ üst və ya aşağı sağ küncdə, menyunu açmaq üçün üç şaquli nöqtəni vurun.


    1. Sayını tapın "Ayarlar" və ya "Seçimlər" və açmaq üçün vurun.

    1. Təklif olunan siyahıda maddəni tapın Varsayılan brauzer olaraq təyin edin və üzərinə vurun. Yandex Brauzerindən istifadə edirsinizsə, bu bölməni ana səhifədə axtarış çubuğu menyusunda tapa bilərsiniz.

    1. Sonra, ekranda tıklamanız lazım olan bir nişan görünəcək "Ayarlar".

    1. Ayarlar səhifəsinə aparılacaqsınız "Defolt Tətbiq"... İndi əvvəlki metodun 5, 6 və 7 -ci bəndlərində təsvir olunan eyni addımları izləyin.


Bu seçim yuxarıda göstərilən üsula çox bənzəyir. Müəyyən hərəkətləri tamamladıqdan sonra yenə də "Varsayılan Tətbiqlər" bölməsinə aparılacaqsınız. Ancaq üstünlük vermək bu yolla, veb brauzerinizdən çıxmadan parametrləri konfiqurasiya edə biləcəksiniz.

Metod 3: aktiv bağlantı

Bu seçim ilk təsvir olunan üsulla eyni üstünlüklərə malikdir. İstənilən brauzeri belə bir fürsət təmin edərsə, smartfonunuzda əsas olaraq təyin edə bilərsiniz.

Bu üsul yalnız Play Store -dan yeni bir brauzer yüklədiyinizdə və ya əsas veb brauzer əvvəllər telefonunuzda quraşdırılmadıqda aktualdır.

  1. İçərisində olan tətbiqə gedin aktiv link, getmək üçün üzərinə vurun. Əməliyyatların siyahısı ilə bir pəncərə açılırsa, seçin "Açıq".
  2. Linki açmaq üçün veb brauzer seçməyiniz lazım olan bir nişan görəcəksiniz. Bu, smartfonunuzda əsas olaraq görmək istədiyiniz brauzer olmalıdır və sonra düyməni yoxlayın "Həmişə".
  3. Varsayılan olaraq quraşdırılacaq olan seçilmiş link seçilmiş brauzerdə açılacaqdır.

Təəssüf ki, bu üsul Telegram, VKontakte və bu kimi tətbiqlər üçün uyğun deyil. Bütün hallarda istifadə edilə bilməz. Ancaq bu yaxınlarda bir veb brauzeri quraşdırmısınızsa və ya defoltlar silinibsə, bu seçim sizin üçün mükəmməl bir həlldir.

Daxili bağlantıları izləmək üçün isteğe bağlı veb brauzer quraşdırılması

Bəzi tətbiqlərdə WebView adlı daxili bağlantı oxu sistemi var. Bu proqramlar üçün GoogleChrome əsas brauzer və ya yuxarıda qeyd olunan WebView vasitəsi kimi istifadə olunur. Ehtiyac yaranarsa, dəyişə bilərsiniz bu parametr.
Bütün tanınmış veb brauzerlərdə bu funksiya yoxdur, buna görə də daha az populyar olan brauzerlər arasında axtarış aparmalı olacaqsınız. Tamaşaçıların yanında dayana bilərsiniz fərqli istehsalçılar artıq Android OS -nin mülkiyyət qabığında quraşdırılmışdır. Aşağıdakı addımlara davam etməzdən əvvəl smartfonunuzda aktiv bir menyu olduğundan əmin olun. "İnkişaf etdiricilər üçün".

WebView görüntüleyicisini əvəz etmək üçün aşağıdakı adımları yerinə yetirin:

    1. Ayarlara gedin və elementi tapın "Sistem" siyahının sonundadır.

    1. Sonra bölməni açın "İnkişaf etdiricilər üçün"... Bunu hərəkətlər siyahısının sonundakı əsas parametrlər menyusunda da tapa bilərsiniz.

    1. İndi qrafiki tapın "WebView Xidməti" və çalıştırın.

    1. Xidmətlərə baxmaq üçün bir neçə seçim təklif olunursa, onay qutusu sahəsindəki qutuyu işarələyərək sizə ən uyğun olanı seçin.

  1. İndi bütün bağlantılar seçdiyiniz brauzerdə açılacaqdır.

Link izləyicisi, çox nadir hallarda dəyişdirilir. Ancaq smartfonunuz yuxarıda göstərilən seçimi təmin edərsə bu seçimdən istifadə edə bilərsiniz.

Bu yazıda brauzeri bir Android smartfonu üçün əsas olaraq təyin etməyin bütün mümkün üsulları təsvir edilmişdir. Vəziyyətdən asılı olaraq hər zaman sizə uyğun bir üsul tapa bilərsiniz.

Bir müddət əvvəl Android üçün proqramlaşdırma təhsili almağa başladım. Eclips ilk Hello Word -ü yayımladıqdan sonra dərhal daha çox şey istədim: çoxlu planlar və möhtəşəm fikirlər var idi. Belə bir fikir, öz brauzerinizi yazmaq idi. Düşünürəm ki, bir çox təcrübəsiz proqramçıların bu istəyi var idi. Qoyduğum tələblər və sonunda baş verənlər bunlardır.

  • Proqram bağlantıları açmalıdır qlobal şəbəkə, səhifələri irəli və geriyə sərbəst gəzmək;
  • Faylları yükləyib yenidən şəbəkəyə yükləyə bilmək;
  • Əlfəcinlər yaradın və qeyd edin;
  • Digər tətbiqlərdən göndərilən bağlantıları yükləyə bilmək;
  • Bir düymə olmalıdır ana səhifə, müxtəlif parametrləri olan menyular və s.

Ümumiyyətlə, öz əllərinizlə tam hüquqlu bir brauzer. Bunu koda qoyaq.

Proqram Android -ə daxil olan standart veb görünüşü əsasında yazılmışdır. Kimi başlanğıc səhifəsi Yandex -dən istifadə edirəm, bu dad məsələsidir. MainActivity əsas Fəaliyyət olacaq.

Əvvəlcə işarələməni təyin edirik xml faylı-fəaliyyət_asası.xml. Əsas konteyner olaraq LinearLayout -dan istifadə edirik - yükləmə prosesini göstərmək üçün ProgressBar -ı bağlayırıq. Sonra, başqa bir LinearLayout konteynerini yaradırıq - Web Görünüşümüzü və FrameLayoutumuzu ora bağlayırıq (oynayan videonu tam ekrana uzatmaq üçün istifadə edirik).

Kodu Göstər

LinearLayout 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" android: orientation = "vertical" tools: context = ". MainActivity">

MainActivity -də kod yazmağa başlayaq

MainActivity üçün tam kod.

Tam koda baxın

Java.io.File idxal edin; android.R.menyu idxal edin; android.annotation.SuppressLint idxal edin; android.app.ActionBar idxal edin; android.app.Activity idxal edin; android.app.AlertDialog idxal edin; android.app.DownloadManager idxal edin; android.app.DownloadManager.Request idxal edin; android.app.KeyguardManager idxal edin; android.app.SearchManager idxal edin; android.content.BroadcastReceiver idxal edin; android.content.Context idxal edin; android.content.DialogInterface idxal edin; android.content.Intent idxal edin; android.content.IntentFilter idxal edin; android.content.SharedPreferences idxal edin; android.net.Uri idxal edin; android.os.Bundle idxal edin; android.os.Environment idxal edin; android.os.Parcelable idxal edin; android.os.PowerManager idxal edin; android.preference.PreferenceManager idxal edin; android.provider.MediaStore idxal edin; android.util.Log idxal edin; android.view.KeyEvent idxal edin; android.view.Menu idxal edin; android.view.MenuItem idxal edin; android.view.View idxal edin; android.view.WindowManager idxal edin; android.webkit.ConsoleMessage idxal edin; android.webkit.DownloadListener idxal edin; android.webkit.ValueCallback idxal edin; android.webkit.WebBackForwardList idxal edin; android.webkit.WebChromeClient idxal edin; android.webkit.WebView idxal edin; android.webkit.WebViewClient idxal edin; android.widget.FrameLayout idxal edin; android.widget.SearchView idxal edin; android.widget.Toast idxal edin; android.graphics.Bitmap idxal edin; android.webkit.URLUtil idxal edin; ictimai sinif MainActivity, Aktivliyi genişləndirir (// Boolean isInternetPresent = false; ConnectionDetector cd; private WebChromeClient.CustomViewCallback mFullscreenViewCallback; private FrameLayout mFullScreenContainer; private View mFullScreenView; ictimai Uri imageUri; şəxsi statik son int FILECHOOSER_RESULTCODE = 2888; şəxsi ValueCallback mUploadMessage; xüsusi Uri mCapturedImageURI = null; xüsusi DownloadManager downloadManager; @Override qorunan boşluğu onCreate (Bundle saveInstanceState) (super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); // Bir nümunə əlaqə detektoru sinfi yaradın: cd = yeni ConnectionDetector (getApplicationContext ()); // ev düyməsini yaratmaq final ActionBar actionBar = getActionBar (); actionBar.setHomeButtonEnabled (doğru); actionBar.setDisplayHomeAsUpEnabled (doğru); // faylın yükləndiyini başa düşmək və BroadcastReceiver alıcısına = yeni BroadcastReceiver () (niyyət @Override (ictimai void onReceive) , Niyyət konteksti (String hərəkəti = ниет.getAction (); əgər (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals (hərəkət)) (loadEnd ();))); // faylın yükləndiyi niyyətini tutun registerReceiver (alıcı, yeni IntentFilter (DownloadManager) .ACTION_DOWNLOAD_COMPLETE)); mWebView = (WebView) findViewById (R.id.web_view); mFullScreenContainer = (FrameLayout) findViewById (R.id.fullscreen_container); mWebViewCsetWent (mVebView.setWent) loadUrl ("http://yandex.ru"); handleIntent (getIntent ()); class HelloWebViewClient WebViewClient (@PageStarted (WebView görünüşü, String url, Bitmap favicon) ümumi boşluğunu ləğv edin (super.onPageStarted (görünüş, url, favicon); findViewById (R.id.progress1) .setVisIT (View.VISIBLE) url); urload = mWebView.getUrl (); ConnectingToInternet ();) @Override public boolean shouldOverrideUrlLoading (WebView görünüşü, String url) (view.loadUrl (url); // bazara bağlantıları işə salın Uri uri = Uri.parse (url); if (uri.getScheme (). bərabərdir ("bazar")) (Niyyət i = yeni niyyət (android.content.Intent.ACTION_VIEW); i.setData (uri); i.addFlags (Niyyət.FLAG_ACTIVITY_NEW_TASK); startActivity (i ); mWebView.canGoBack (); (mWebView.goBack ();)) // e -poçtu işlədərsə (uri.getScheme (). bərabərdirsə ("mailto"))) (Niyyət i = yeni niyyət (android.content.Intent.ACTION_SEND ); i.setType ("text / html"); i.putExtra (Intent.EXTRA_SUBJECT, "Mövzu daxil edin"); i.putExtra (Intent.EXTRA_TEXT, "Mətn daxil edin"); i.putExtra (Intent.EXTRA_EMAIL, yeni) String (url)); startActivity (i); mWebView.canGoBack (); (mWebView.goBack ();)) // zəngə başlayın, əgər (uri.getScheme (). Bərabərdir ("tel")) (Niyyət i = yeni Niyyət (android.content.Intent.ACTION_DIAL); i.setData (uri); startActivity (i); mWebView.canGoBack (); (mWebView.goBack ();)) // bölməni başlasanız (uri.getScheme ( bərabərdir ("geo"))) (Niyyət i = yeni niyyət (android.content.Intent.ACTION_VIEW); i.setData (uri); startActivity (i); mWebView.canGoBack (); (mWebView.g oBack (); )) doğru qayıt; ) OnPageFinished (WebView görünüşü, String url) @findViewById (R.id.progress1) .setVisibility (View.GONE); ConnectingToInternet (); mWebView.loadUrl ("fayl: ///android_asset/error.png");)) mWebView.setWebViewClient (yeni HelloWebViewClient ()); // faylları mWebView.setDownloadListener (yeni DownloadListener () (@DownloadStart -da ictimai boşluğu ləğv edin (final String url, String userAgent, String contentDisposition, String mimetype, long contentLength) (final String fileName = URLUtil.guessFileDame (url, , mimetype); final AlertDialog.Builder downloadDialog = yeni AlertDialog.Builder (MainActivity.this); downloadDialog.setTitle ("Yükləmə meneceri"); downloadDialog.setMessage ("Bu faylı Donwload qovluğuna yükləsin?" + "n" + mimetype + "n"+ url); downloadDialog.setPositiveButton ("Bəli", yeni DialogInterface.OnClickListener () (ictimai boşluq onClick (DialogInterface dialogInterface, int i) (doDownload (url, fileName); dialogInterface.dismiss ();))); downloadDialog .setNegativeButton ("Xeyr", yeni DialogInterface.OnClickListener () (ictimai boşluq onClick (DialogInterface dialogInterface, int i) ())); downloadDialog.show ();))); ) // ************************************* // ****** ********************************** // ************ ** **************************** ictimai boşluq ConnectingToInternet () (// İnternet bağlantısının statusunu əldə edin isInternetPresent = cd. ConnectingToInternet (); // İnternet vəziyyətini yoxlayın: if (isInternetPresent) (// İnternet bağlantısı var // edin HTTP sorğuları :) başqa (// İnternet bağlantısı yoxdur Toast.makeText (bu, "İnternet düşdü !!!", Toast.LENGTH_SHORT) .show ();)) @SuppressLint ("SetJavaScriptEnabled") @Override // settings public void onResume () (super.onResume (); SharedPreferences sPref = PreferenceManager.getDefaultSharedPreferences (this); if (sPref.getBoolean ("img", false)) (mWebView.getSettings (). setLoadsImagesAutomatically (false)) .gettings) .setLoadsImagesAutomatically (true);) if (sPref.getBoolean ("js", false)) (mWebView.getSettings (). setJavaScriptEnabled (false);) else (mWebView.getSettings (). setJavaScriptEnabled (true);) if (sPref.getBoolean ("önbellek", yalan)) (önbellek = 2;) başqa (önbellek = 1;)) // əlfəcin yazın public void saveBm (String urlPage1, String urlTitle1) (Niyyət niyyəti = yeni niyyət (bu , SaveBmActivity. Sinif); aim.putExtra ("urlTitle", urlTitle1); ниет.putExtra ("urlPage", urlPage1); startActivity (niyyət);) ictimai boşluq pref () (// Niyyət parametrləri niyyət = yeni niyyət (bu, PreferencesActivity.class); startActivity (niyyət); ) // önbelleği və tarixi şəxsi boşluq clCache () (clearCache (fəaliyyət); mWebView.clearCache (doğru); mWebView.clearHistory (); Toast.makeText (bu, "Önbellek və Tarix silindi", Toast.LENGTH_SHORT) .show ();) @Override qorunan boşluğu onUserLeaveHint () (super.onUserLeaveHint ();) @KeyDown ictimai booleanını ləğv edin (int keyCode, KeyEvent hadisəsi) (// geri düyməsini ((keyCode == KeyEvent.KEYCODE_BACK)) (mWebView. canGoBack (); (mWebView.goBack ();) doğruya qayıt;) super.onKeyDown qaytar (keyCode, hadisə);) // işləyən proqramın xüsusi boolean handle urununu tut Əgər səhifəni yüklə qayıt doğru;) yalana qayıt;) // yükləmə meneceri şəxsi boşluğu doDownload (String url, String fileName) (Uri uriOriginal = Uri.parse (url); cəhd edin (Toast.makeText (MainActivity.th) , "Yüklənir" + fileName, Toast.LENGTH_LONG) .show (); İstək sorğusu = yeni DownloadManager.Request (Uri.parse (url)); request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, fileName); final DownloadManager dm = (DownloadManager) getSystemService (Context.DOWNLOAD_SERVICE); dm.enqueue (istək); ) catch (İstisna e) (Toast.makeText (bu, "Hata", Tost.LENGTH_SHORT) .show (); Log.e ("", "Yükləmə problemi:" + uriOriginal, e);)) // video tam ekran xüsusi final WebChromeClient mWebChromeClient = yeni WebChromeClient () (@Orride @SuppressWarnings ("köhnəlmə") ictimai boşluğu onShowCustomView (Görünüş görünüşü, int requestOrientation, CustomViewCallback geri çağırışı) (onShowCustomView (viewOrtaq bax) (əgər (mFullScreenView! = null) (callback.onCustomViewHidden (); qayıt;) mFullScreenView = görünüş; mWebView.setVisibility (View.GONE); mFullScreenContainer.setVisibility (View.VISIBLE); mFullScreenContainer.addView (görünüş); mFullscreenViewCallback = geri zəng; ) @Override public void onHideCustomView () (super.onHideCustomView (); if (mFullScreenView == null) (return;) mWebView.setVisibility (View.VISIBLE); mFullScreenView.setVisibility (View.GONEVCC) mFuller () MFullScreenContainer.removeView (mFullScreenView); mFullscreenViewCallback.onCustomViewHidden (); mFullScreenView = null;) // *************************** ******************* faylları şəbəkəyə yükləyin // Android 3.0+ üçün openFileChooser ictimai boşluğu openFileChooser (ValueCallback) uploadMsg, String acceptType) (// Mesajı yeniləyin mUploadMessage = uploadMsg; cəhd edin (// sdcard Faylında AndroidExampleFolder yaradın ImageStorageDir = yeni Fayl (Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES), "AndroidExampleFolder")) // sdcard imageStorageDir.mkdirs -də AndroidExampleFolder yaradın ();) // Kamera tərəfindən çəkilmiş şəkil faylının yolunu və adını yaradın Fayl faylı= yeni Fayl (imageStorageDir + File.separator + "IMG_" + String.valueOf (System.currentTimeMillis ()) + ".jpg"); mCapturedImageURI = Uri.fromFile (fayl); // Şəkil çəkmə kamerasının niyyəti son Niyyətin tutulması İntent = yeni niyyət (MediaStore.ACTION_IMAGE_CAPTURE); captureIntent.putExtra (MediaStore.EXTRA_OUTPUT, mCapturedImageURI); Niyyət i = yeni niyyət (Niyyət.ACTION_GET_CONTENT); i.addCategory (Niyyət.CATEGORY_OPENABLE); i.setType ("görüntü / *"); // Seçici fayl niyyəti yaratmaq Niyyət chooserIntent = Intent.createChooser (i, "Image Seçici"); // Kameraları seçim niyyətini seçənə təyin edin chooserIntent.putExtra (Intent.EXTRA_INITIAL_INTENTS, yeni Parcelable (captureIntent)); // Onactivityresult metodunun bypass görüntüsünün seçilməsi ilə əlaqədar startActivityForResult (chooserIntent, FILECHOOSER_RESULTCODE) fəaliyyət metoduna zəng edin; ) tutmaq (İstisna e) (Toast.makeText (getBaseContext (), "İstisna:" + e, Toast.LENGTH_LONG) .show ();)) // Android üçün openFileChooser< 3.0 @SuppressWarnings("unused") public void openFileChooser(ValueCallbackuploadMsg) (openFileChooser (uploadMsg, "");) // @SuppressWarnings ("istifadə edilməmiş") ictimai boşluğu openFileChooser (ValueCallback) uploadMsg, String acceptType, String capture) (openFileChooser (uploadMsg, acceptType);) public boolean onConsoleMessage (ConsoleMessage cm) (onConsoleMessage (cm.message (), cm.lineNumber (), cm.sourceId ()); doğruya dön; ictimai boşluq onConsoleMessage (String mesajı, int lineNumber, String sourceID) (//Log.d("androidruntime "," Konsol mesajlarını göstər, Hata ayıklama üçün istifadə olunur: "+ mesaj);); ); // SetWebChromeClient -i bitirin // Nəticəni əldə edin @SuppressWarnings ("istifadə olunmamış") şəxsi Obyekt məlumatları; @Override qorunan boşluğu onActivityResult (int requestCode, int resultCode, Intent data) (if (data == null) (return;) String urlPage2 = data.getStringExtra ("urlPage2"); mWebView.loadUrl (urlPage2); if (requestCode = = FILECHOOSER_RESULTCODE) (if (null == this.mUploadMessage) (return;) Uri result = null; try (if (resultCode! = RESULT_OK) (result = null;) else (// niyyət null olarsa öz dəyişənindən çıxarış) result = data == null? mCapturedImageURI: data.getData ();)) catch (Exception e) (Toast.makeText (getApplicationContext (), "activity:" + e, Toast.LENGTH_LONG) .show ();) mUploadMessage. onReceiveValue (nəticə); mUploadMessage = null;)) // ***************************** ictimai boşluq loadEnd () (Tost. makeText (bu, "Donwload Qovluğuna Yüklənən Fayl", Toast.LENGTH_SHORT) .show ();) // @Orride menyu ictimai boolean onCreateOptionsMenu (Menyu menyusu) (// Menyu şişirin; bu, elementləri hərəkət çubuğuna əlavə edərsə mövcuddur.getMenuIn flater (). şişirtmək (R.menu.main, menyu); doğru qayıtmaq; ) // ********************************************* ******* @Public Boolean OnOptionsItemSelected (MenuItem elementi) (switch (item.getItemId ()) (case android.R.id.home: // home button mWebView.loadUrl ("http: // yandex). ru "); doğruya dön; vəziyyət R.id.item1: // geri mWebView.canGoBack (); (mWebView.goBack ();) doğruya dön; hal R.id.item2: // irəli mWebView.canGoForward (); (mWebView.goForward ();) true true; case R.id.item3: // mWebView.reload (); (mWebView.reload ();) true return; case R.id.item4: // önbelleği təmizləyin mWebView.clearCache (doğru); clearCache (fəaliyyət); Toast.makeText (bu, "Önbelleği təmizlə", Toast.LENGTH_SHORT) .show (); doğruya qayıt; case R.id.item5: mWebView.clearHistory (); / / Toast.makeText tarixçəsini təmizləyin (bu, "Tarix təmizdir.", Toast.LENGTH_SHORT) .show (); doğruya qayıdın; case R.id.item6: saveBm (mWebView.getUrl (), mWebView.getTitle ()) ; / / bir əlfəcin yazın qaytarın doğru; hal R.id.item7: // əlfəcin çubuğu Niyyət niyyəti1 = yeni niyyət (bu , SaveBmActivity.class); startActivityForResult (niyyət1, 1); doğru qayıtmaq; case R.id.item8: // mWebView.stopLoading () yüklənməsini dayandırın; doğru qayıtmaq; case R.id.item9: pref (); // parametrlər doğruya qayıdır; dava R.id.item10: // boşdur, indiyə qədər qaytarın; case R.id.item11: // exit if (cache == 2) (clCache ();) finish (); doğru qayıtmaq; default: qayıt super.onOptionsItemSelected (maddə); )) @SuppressWarnings ("köhnəlmə") @Destroy () (super.onDestroy (); mWebView.stopLoading (); mWebView.clearCache (doğru); mWebView.clearView (); mWebView.freeMemory (); məhv etmək (); mWebView = null;) // önbelleği boşaltmaq clearCache (Kontekst konteksti) (clearCacheFolder (context.getCacheDir ());) void clearCacheFolder (son Fayl dir) (əgər (dir! = null && dir.isDirectory ()) (cəhd edin ((Fayl uşağı: dir.listFiles ()) (// əvvəlcə (uşaq.isDirectory ()) clearCacheFolder (uşaq) olarsa qovluqları rekursiv olaraq təmizləyin; başqa // sonra faktiki olaraq uşaq faylları. silmək ();)) tutmaq (İstisna e) ())))

Layihəni yükləmək olar

Android, öz brauzer pəncərənizi və ya hətta istifadə edərək öz brauzer klonunuzu yaratmağa imkan verir. Elementin özü WebKit mühərrikindən istifadə edir və bir çox xüsusiyyət və üsula malikdir. İnternetdəki səhifələrə baxa biləcəyimiz bir tətbiq yaratmağın əsas bir nümunəsi ilə məhdudlaşacağıq. Ən son versiyalarda mühərrik Chromium -dan istifadə olunur, lakin sadə işlərdə bu qədər fərq yoxdur.

Yeni bir layihə hazırlayaq MyBrowser və işarələmə sənədindəki kodu dərhal dəyişdirin res / layout / activity_main.xml:

İndi aktivlik faylını açaq MainActivity.java və komponenti elan edin, həm də işə salın - JavaScript dəstəyini aktiv edin və yükləmə səhifəsini göstərin.

Şəxsi WebView webView; ictimai boşluq onCreate (Bundle saveInstanceState) (super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); webView = findViewById (R.id.webView); // JavaScript dəstəyi webView.getSettings (). setJavaScriptEnabled ; // yükləmə səhifəsini göstərin webView.loadUrl ("http: // site / android");)

Tətbiq İnternetdən istifadə edəcəyi üçün manifest faylında İnternetə giriş icazəsi təyin etməlisiniz.

Manifestdəki eyni yerdə, başlığı tətbiqimizdən (qalın) çıxardaraq ekran sətrini dəyişdiririk:

android: theme = "@ style / Theme.AppCompat.NoActionBar">

Tətbiqə başlayaq. Əməyimizdə ən sadə veb səhifə görüntüleyicisinə sahibik, ancaq bir çatışmazlığı ilə. Hər hansı bir linki vurursanız, standart brauzeriniz avtomatik olaraq başlayacaq və yeni səhifə artıq orada göstəriləcək. Daha doğrusu, əvvəllər belə idi. Yeni cihazlarda tətbiqin işə salınması dərhal brauzeri açır.

Həll etmək bu problem və proqramınızdakı bağlantıları açmaq üçün sinfi ləğv etməlisiniz WebViewClient və tətbiqimizin bağlantıları idarə etməsinə icazə verin. Koda iç içə bir sinif əlavə edək:

Şəxsi sinif MyWebViewClient, WebViewClient (@TargetApi (Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading (WebView görünüşü, WebResourceRequest sorğusu) (view.loadUrl (request.getUrl ()) uzanır (); ToString (); köhnə qurğular @Override public boolean shouldOverrideUrlLoading (WebView görünüşü, String url) (view.loadUrl (url); doğruya qayıt;))

Sonra metodda onCreate () bir nümunə təyin edin MyWebViewClient... Obyekt işə salındıqdan sonra hər yerdə ola bilər:

WebView.setWebViewClient (yeni MyWebViewClient ());

İndi tətbiqimiz yaradıldı WebViewClient seçilmiş hər hansı bir URL -in brauzeri işə salmaq əvəzinə konteynerin özünə yüklənməsinə imkan verir. Metod, mövcud və tələb olunan URL -ni göstərdiyimiz bu funksiyadan məsuldur. Qayıdış dəyəri doğru qaçmağa ehtiyacımız olmadığını söyləyir üçüncü tərəf brauzeri və məzmunu müstəqil olaraq linkdən yükləyin. API 24 versiyasında metodun həddən artıq yüklənmiş bir versiyasını əlavə etdik, bunu unutmayın.

Proqramı yenidən başladın və bağlantıların tətbiqin özündə yükləndiyinə əmin olun. Amma indi başqa bir problem ortaya çıxdı. Əvvəlki səhifəyə qayıda bilmərik. Cihazımızdakı GERİ düyməsini bassaq, sadəcə tətbiqimizi bağlayarıq. Yeni problemi həll etmək üçün GERİ düyməsini sıxmaq lazımdır. Əlavə et yeni üsul:

@Ortaq boşluğu onBackPressed () (əgər (webView.canGoBack ()) (webView.goBack ();) başqa (super.onBackPressed ();))

Əvvəlki səhifəyə naviqasiyanı dəstəkləyənləri yoxlamalıyıq. Şərt doğrudursa, metod çağırılır Qeri gayıt () bizi əvvəlki səhifəyə bir addım geri çəkir. Bir neçə belə səhifə varsa, ardıcıl olaraq ilk səhifəyə qayıda bilərik. Bu vəziyyətdə, metod həmişə dəyəri qaytaracaq doğru... İnternetdə səyahətə başladığımız ilk səhifəyə qayıdanda dəyər geri qayıdacaq yalan və GERİ düyməsinə basma prosesi, tətbiqin ekranını bağlayacaq sistemin özü tərəfindən alınacaq.

Tətbiqi yenidən işə salın. İndi bağlantıları izləməyə və əvvəlki səhifəyə qayıtmağa imkan verən öz veb brauzeriniz var. Sənədləri nəzərdən keçirdikdən sonra, proqramı brauzeriniz üçün digər dadlı şirniyyatlarla təchiz edə bilərsiniz.

Brauzerdə saytınıza gedən bəzi bağlantıları açmaq və tətbiqdə yerli bağlantıları açmaq lazımdırsa, fərqli qaytarma dəyərləri olan şərti tətbiq edin.

Ümumi sinif MyWebViewClient WebViewClient (@Override public boolean shouldOverrideUrlLoading (WebView görünüşü, String url) (əgər (Uri.parse (url) .getHost () .. ACTION_VIEW, Uri.parse (url)); view.getContivity () (niyyət); gerçəyə qayıt;))

Tətbiqdəki bütün yerli bağlantıları, qalanını brauzerdə açacaq universal bir üsul (bir sətri dəyişdirin):

Ümumi sinif MyAppWebViewClient WebViewClient (@Override public boolean shouldOverrideUrlLoading (WebView görünüşü, String url) genişləndirir if (Uri.parse (url) .getHost (). length () == 0)(yanlış qayıt;) Niyyət niyyəti = yeni niyyət (Niyyət.ACTION_VIEW, Uri.parse (url)); view.getContext (). startActivity (niyyət); doğru qayıtmaq; ))

İndi nümunəni bir az da çətinləşdirək ki, istifadəçinin standart brauzerlərə alternativi olsun.

Daha aydın etmək üçün nümunəni aşağıdakı kimi yenidən quraq. İki fəaliyyət yaradın. İkinci fəaliyyətə keçmək üçün düyməni birinci fəaliyyətə qoyun və komponenti ikinci fəaliyyətə qoyun.

Manifestdə ikinci fəaliyyət üçün bir filtr təyin edirik.

İkinci fəaliyyətə keçmək üçün düyməni kodlayın.

OnClick (Baxış görünüşü) ictimai boşluğu (Niyyət niyyəti = yeni niyyət ("ru.alexanderklimov.Browser"); aim.setData (Uri.parse ("http: // site / android /")); startActivity (niyyət);)

Filtri göstərən öz niyyətimizi yaratdıq və məlumatları - sayt ünvanını təqdim etdik.

İkinci fəaliyyət məlumatları almalıdır:

Ru.alexanderklimov.test tətbiqi paketi; android.net.Uri idxal edin; android.support.v7.app.AppCompatActivity idxal edin; android.os.Bundle idxal edin; android.webkit.WebView idxal edin; android.webkit.WebViewClient idxal edin; ictimai sinif SecondActivity, AppCompatActivity -ni uzadır (@Corlanmış qorunan boşluğu ləğv edin (Bundle saveInstanceState) (super.onCreate (saveInstanceState); setContentView (R.layout.activity_second); Uri url = getIntent (). GetData (); WebView webView = findViewById (R.id.webView); webView.setWebViewClient (yeni Callback ()); webView.loadUrl (url.toString ()); ) xüsusi sinif Geri Çağırış WebViewClient (@Override public boolean shouldOverrideUrlLoading (WebView görünüşü, String url) (qaytar (yanlış);)))

İkinci fəaliyyətin filtrində iki hərəkət göstərdik.

Bu o deməkdir ki, hər hansı bir fəaliyyət (oxu, tətbiqlər) eyni şəkildə mini brauzerlə fəaliyyətinizi tetikleyebilir. Hər hansı bir köhnə layihəni studiyada ayrı bir pəncərədə işlədin və ya yenisini yaradın və ona bir düymə əlavə edin və düyməni basmaq üçün istifadə etdiyimiz kodu yazın.

İkinci proqramı başladın (ilk tətbiq bağlana bilər) və düyməni basın. İlk müraciətiniz başlamaz ev ekranı və dərhal bir mini brauzerlə ikinci fəaliyyət. Beləliklə, hər hansı bir tətbiq, fəaliyyətinizin sinif adını bilmədən, ancaq simli istifadə edərək brauzeri işə sala bilər "ru.alexanderklimov.Browser"-ə ötürülür Niyyət... Deyilənə görə, brauzerdəki fəaliyyətiniz standart bir kateqoriyaya və məlumatlara sahib olmalıdır. Xatırlatmaq istəyirəm:

Sətirinizi bir simli sabit kimi təmsil edə bilərsiniz və brauzerinizin bütün potensial istifadəçilərinə bunu öz başlarına necə işlədə biləcəklərini söyləyə bilərsiniz. Ancaq Android-də artıq belə bir hazır sabit var ACTION_VIEW kömək sənədlərinə görə aşağıdakılardır:

Ümumi statik son java.lang.String ACTION_VIEW = "android.intent.action.VIEW";

İkinci tətbiqdəki düymənin kodunu yenidən yazaq

Niyyət (android.content.Intent.ACTION_VIEW, Uri.parse ("http: // site / android /")); startActivity (niyyət);

Bu dəfə nə olacaq? Və daxil olmaqla iki hərəkətimiz olduğunu xatırlayırıq android.intent.action.İZLƏYİN... Bu o deməkdir ki, brauzerə malik ilk tətbiqimiz, istifadəçidən bəzi tətbiqlər bu kodu istifadə edərkən bu əmri də tanımalıdır. Emulatorun ən azı bir belə "Brauzer" proqramı var və indi birinci tətbiqdən ikinci fəaliyyətimiz ona əlavə edildi. Ekranda iki tətbiqdən ibarət bir seçim görünəcək.

Və bütün alternativ brauzerləri silmək və yalnız proqramınızı tərk etsəniz, heç bir seçim qalmayacaq. Brauzeriniz əsas brauzer olacaq. Və bəzi tətbiqlər müəyyən bir şəkildə veb səhifəsini açmaq istəyirsə, proqramınız açılacaq.

Kiçik bir qeyd. Əvəz etsəniz son sətir buna bir:

StartActivity (Intent.createChooser (niyyət, "Meow ..."));

Sonra proqram seçim pəncərəsində, üst sətir "Aç" və ya onun yerli tərcüməsi əvəzinə xəttiniz görünəcək. Ancaq bu əsas şey deyil. Nədənsə cihazda tək bir brauzer yoxdursa, kodun bu versiyası, orijinal versiyadan fərqli olaraq tətbiqin çökməsinə səbəb olmayacaq. Buna görə etibarlılıq naminə təklif olunan variantdan istifadə edin.

Cihazlardakı standart brauzerlər Android bazasıçox vaxt tələbkar istifadəçilərin gündəlik ehtiyaclarını ödəmir. Bunda əməliyyat sistemiçox keyfiyyətli və işlək İnternet brauzerləri var. Bu yazıda Android üçün ən yaxşı brauzerləri topladıq.

Firefox haqlı olaraq Android -də ən yaxşı mobil brauzerlərdən birinin adını daşıyır. Bu əməliyyat sistemində mövcud olduğu illər ərzində Mozilla inkişafı bir çox funksiya əldə etdi və təmizləndi müasir interfeys... Android üçün Firefox, funksionallıq, istifadə rahatlığı və istifadə sürəti balansıdır. Mobil Brauzer Mozilla eyni Google Chrome -a sürət itirir, lakin Firefox -un bir çox xüsusiyyətləri daha xoş və rahat hala gətirilir.

Firefox -un istifadə etdiyi xüsusi Gecko mühərriki, demək olar ki, bütün müasir veb standartlarını dəstəkləyir və brauzerin masa üstü versiyasında olduğu kimi, əlavə funksionallığı olan uzantıları da var. Fiefox -un əsas funksiyaları arasında: xüsusi bir hesab istifadə edərək brauzerlər arasında bütün məlumatların sinxronizasiyası, təhlükəsiz sörf, rahat bir başlanğıc paneli, çoxlu uzantılar, oxu rejimi.



Yalnız kompüterlərdə deyil, həm də ən populyar brauzer mobil qurğular ah Google Chrome. Təəccüblü deyil ki, demək olar ki, həmişə ən populyar mobil OS-də əvvəlcədən quraşdırılmışdır. Chrome populyarlığını layiqincə qazandı - sürətli, nisbətən işlək, sadə və rahatdır və eyni zamanda yaxşı inteqrasiya olunmuşdur. Google xidmətləri və brauzerin masaüstü versiyası (məlumatların və nişanların tam sinxronizasiyası var). Google xidmətləri ilə inteqrasiya bəzən faydalı ola bilər, məsələn - ilə səhifələrdəki mətni tərcümə etmək google istifadə edərək Tərcüməçi və ya səsli axtarış.

Chrome istifadəçi təhlükəsizliyi ilə də məşğul olur - brauzer Android cihazları üçün təhlükəli ola biləcək saytlar üçün quraşdırılmış xüsusi filtrə malikdir. Bir növ məlumat sıxılma texnologiyası var. Opera kimi mükəmməl olmasa da, Wi-Fi və mobil internet üzərindən ötürülən məlumatları yaxşı saxlayır. Saytlara anonim daxil olmaq üçün gizli rejim mövcuddur. Bəlkə də tək Chrome qüsuru hazırda - uzantılar üçün dəstək yoxdur. Bütün yeni xüsusiyyətləri əvvəlcə sınamaq istəyənlər üçün Chrome Beta və Dev var. Bu brauzer versiyaları daha sürətli və daha tez -tez yenilənir - bütün yeniliklər onlarda sınaqdan keçirilir.



Norveçin Opera şirkətinin mobil brauzerləri də Android platformasında ən populyar, işlək və sürətlə inkişaf edənlərdən biridir. İşlədikləri illər ərzində bu uşaqlar, smartfonlar və planşetlər üçün demək olar ki, ideal bir İnternet brauzeri üçün bir düstur əldə edə bildilər. Operada demək olar ki, lazım olan hər şey var adi istifadəçi: sürətli sörf, rahat klassik ekspress panel, masa üstü versiyası ilə məlumatların sinxronizasiyası, anonim rejim, ünvan çubuğundan göstərişlərlə rahat axtarış və əsas xüsusiyyətlərdən biri - trafikin sıxılması.

Operadan olan uşaqlar, trafikə qənaət etmək üçün texnologiyanı istifadə edərək iti yedilər. Aktivləşdirilmiş mobil opera Turbo rejimi xərcləri azalda bilər mobil internet iki və ya hətta üç dəfə. Xüsusilə trafik istehlakı ilə maraqlananlar üçün Opera Mini var - standart olaraq qənaət edir, lakin bəzən saytların görünüşü bundan əziyyət çəkir. Ayrıca mini versiya adi Opera'dan daha yüngül və sürətlidir. Başqa biri güclü nöqtə eyni adlı brauzer - gözəl və xoş görünüş. Opera həmişə brauzerlərdəki ən şık interfeyslərdən biri ilə məşhur olmuşdur. Cihazınızdakı bütün trafikləri sıxışdırmaq istəyirsinizsə, tətbiqə diqqət yetirin.



Dolphin, tonlarla əlavə funksiya və funksiyadan ibarət olan Android üçün alternativ bir brauzerdir. Bunlar arasında dəstəyi qeyd etməyə dəyər Adobe flash Demək olar ki, hər kəsin imtina etdiyi, lakin interfeysi dəyişdirmək üçün müxtəlif mövzulardan istifadə edilməsi, unikal əlavələr dəstəyi və rahat və sadə jestlərin idarə olunmasında hələ də çox istifadə olunur. Bütün bunlar bir anda mövcuddur - yox əlavə parametrlər... Dolphin sürətli, təhlükəsiz, pulsuz və hər zaman yenidir-tərtibatçılar demək olar ki, hər həftə brauzer yeniləmələrini buraxırlar.


Puffin, konsepsiyasına görə Yunusa bənzəyən bir mobil veb brauzerdir. Burada da gözəl və istifadəçi dostu bir interfeys var, bir çox imkanlar var və Puffin də "delfin" qədər sürətlidir. Əsasən, Puffin brauzeri uyğun gəlir zəif qurğular, "yüngül" veb sörfünün xüsusi bir texnologiyasını təmin etdiyi üçün səhifələr əvvəlcə yüklənir bulud xidməti Puffin, orada optimallaşdırılır və yüngül bir şəkildə cihaz ekranına gəlir. Eyni zamanda, səhifələrin keyfiyyəti və görünüşü praktiki olaraq pozulmuş bir nizamdan və ya keyfiyyətin azalmasından əziyyət çəkmir.

Həm də Puffin -də bir sıra əlavə xüsusiyyətləri qeyd etməyə dəyər:

  • oyunlar üçün Adobe Flash -a tam dəstək (ekrandakı virtual joystick);
  • bir bulud xidməti vasitəsilə trafikin şifrələnməsi;
  • siçan emulyasiyası;
  • faylları əvvəlcə buluda, sonra cihaza yükləmək imkanı;
  • uzantıları quraşdırmaq;
  • interfeys mövzuları.
Puffin brauzeri zəif qurğular üçün əla seçimdir, lakin eyni zamanda bu internet brauzerinin funksionallığı işğal olunmur.



Rusiyanın Yandex şirkəti Android mobil cihazlar üçün öz brauzerini yaratmağı bacarıb. Bu platforma üçün Yandex Browser, MDB ölkələri istifadəçiləri üçün əla bir həlldir. Bu İnternet brauzeri birbaşa Yandex -in özü və digər yerli xidmətlərlə inteqrasiya ilə doymuşdur sosial şəbəkələr/ portallar. Məsələn, brauzerdəki axtarış çubuğu lazımi saytları təklif edir və sorğuları mükəmməl başa düşür və tətbiqin içərisində hava və tıxaclar haqqında məlumatları görə bilərsiniz.