हम Android के लिए एक पूर्ण ब्राउज़र लिख रहे हैं। वेबव्यू - अपना खुद का ब्राउज़र बनाएं एक एमुलेटर में एक एप्लिकेशन लॉन्च करना

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

मैंने कुछ समय पहले ही एंड्रॉइड प्रोग्रामिंग सीखना शुरू किया था। एक्लिप्स द्वारा अपना पहला हैलो वर्ड तैयार करने के बाद, मैं तुरंत और अधिक चाहता था: कई योजनाएं और भव्य विचार सामने आए। ऐसा ही एक विचार था अपना खुद का ब्राउज़र लिखना। मुझे लगता है कि कई शुरुआती प्रोग्रामर की यह इच्छा रही होगी। यहां वे आवश्यकताएं हैं जो मैंने निर्धारित की हैं और अंत में क्या हुआ।

  • प्रोग्राम को लिंक खोलने चाहिए वैश्विक नेटवर्क, पृष्ठों के माध्यम से स्वतंत्र रूप से आगे और पीछे जाएँ;
  • फ़ाइलें डाउनलोड करने और उन्हें नेटवर्क पर वापस अपलोड करने में सक्षम हो;
  • बुकमार्क बनाएं और उन्हें सहेजें;
  • अन्य एप्लिकेशन से भेजे गए लिंक डाउनलोड करने में सक्षम हो;
  • एक बटन होना चाहिए होम पेज, विभिन्न सेटिंग्स के साथ मेनू, आदि।

सामान्य तौर पर, एक पूर्णतः स्वयं करने वाला ब्राउज़र। आइए इसे कोड में डालें।

प्रोग्राम एंड्रॉइड में शामिल मानक वेबव्यू के आधार पर लिखा गया है। जैसा होम पेजमैं यांडेक्स का उपयोग करता हूं, यह स्वाद का मामला है। मुख्य गतिविधि MainActivity होगी.

सबसे पहले, हम मार्कअप सेट करते हैं एक्सएमएल फ़ाइल-activity_main.xml. हम LinearLayout को मुख्य कंटेनर के रूप में उपयोग करते हैं - हम लोडिंग प्रक्रिया को प्रदर्शित करने के लिए इसमें प्रोग्रेसबार लपेटते हैं। इसके बाद, हम एक और LinearLayout कंटेनर बनाते हैं - हम इसमें अपना वेबव्यू और फ़्रेमलेआउट लपेटते हैं (हम इसका उपयोग प्लेइंग वीडियो को पूर्ण स्क्रीन तक फैलाने के लिए करते हैं)।

कोड देखें

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='वर्टिकल' टूल्स:context='.MainActivity'>

आइए MainActivity में कोड लिखना शुरू करें

MainActivity का पूरा कोड.

पूरा कोड देखें

आयात करें java.io.फ़ाइल; आयात android.R.मेनू; आयात android.annotation.SuppressLint; android.app.ActionBar आयात करें; आयात android.app.Activity; आयात android.app.AlertDialog; आयात android.app.DownloadManager; आयात android.app.DownloadManager.Request; आयात android.app.KeyguardManager; आयात android.app.SearchManager; आयात android.content.BroadcastReceiver; आयात android.content.Context; आयात android.content.DialogInterface; आयात android.content.Intent; आयात android.content.IntentFilter; आयात android.content.SharedPreferences; आयात android.net.Uri; android.os.बंडल आयात करें; आयात android.os.पर्यावरण; आयात android.os.Parcelable; आयात android.os.PowerManager; आयात android.preference.PreferenceManager; आयात android.provider.MediaStore; आयात android.util.Log; आयात android.view.KeyEvent; आयात android.view.Menu; आयात android.view.MenuItem; आयात android.view.View; आयात android.view.WindowManager; आयात android.webkit.ConsoleMessage; आयात android.webkit.DownloadListener; आयात android.webkit.ValueCallback; आयात android.webkit.WebBackForwardList; आयात android.webkit.WebChromeClient; आयात android.webkit.WebView; आयात android.webkit.WebViewClient; आयात android.widget.FrameLayout; आयात android.widget.SearchView; आयात android.widget.Toast; आयात android.graphics.Bitmap; आयात android.webkit.URLUtil; सार्वजनिक वर्ग MainActivity गतिविधि का विस्तार करता है (//कनेक्शन स्थिति के लिए बूलियन वैरिएबल बूलियन isInternetPresent = false; कनेक्शनडिटेक्टर cd; निजी WebChromeClient.CustomViewCallback mFullscreenViewCallback; निजी FrameLayout mFullScreenContainer; निजी दृश्य mFullScreenView; निजी WebView mWebView; स्ट्रिंग urload; int कैश = 1; SharedPreferences sPref; अंतिम गतिविधि गतिविधि = यह; सार्वजनिक उरी छविउरी; निजी स्थैतिक अंतिम int FILECHOOSER_RESULTCODE = 2888; mUploadMessage; निजी उरी mCapturedImageURI = शून्य; निजी डाउनलोड प्रबंधक डाउनलोड प्रबंधक; @Override संरक्षित void onCreate(Bundle savingInstanceState) ( super.onCreate(sagedInstanceState); setContentView(R.layout.activity_main); //एक उदाहरण कनेक्शन डिटेक्टर क्लास बनाएं: cd = new ConnectionDectator(getApplicationContext()); // एक होम बनाएं बटन अंतिम ActionBar ActionBar = getActionBar(); ActionBar.setHomeButtonEnabled(true); ActionBar.setDisplayHomeAsUpEnabled(true); // इस इरादे को पकड़ें कि फ़ाइल लोड हो गई है और ब्रॉडकास्ट रिसीवर रिसीवर को सूचित करें = नया ब्रॉडकास्ट रिसीवर () प्रसंग, आशय आशय) (स्ट्रिंग क्रिया = आशय.getAction(); यदि (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) (loadEnd(); ) ) ) // आशय को पकड़ें कि फ़ाइल रजिस्टर रिसीवर (रिसीवर, नया) लोड की गई है IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); mWebView = (WebView) findViewById(R.id.web_view); हैंडलइंटेंट(getIntent()); वर्ग HelloWebViewClient WebViewClient का विस्तार करता है ( @Override public void onPageStarted(WebView view, String url, Bitmap favicon) ( super.onPageStarted(view, url, favicon); findViewById(R.id.progress1).setVisibility(View.VISIBLE); setTitle( url); urload=mWebView.getUrl(); ConnectingToInternet() url) ); यदि (uri.getScheme().equals("market")) ( आशय i = नया आशय(android.content.Intent.ACTION_VIEW); i.setData(uri); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ; स्टार्टएक्टिविटी (i); mWebView.canGoBack(); ( mWebView.goBack() ) // ईमेल चलाएं यदि (uri.getScheme().equals("mailto")) ( इरादा i = नया इरादा (android.content) .इरादा) .ACTION_SEND); i.setType("text/html"); i.putExtra(Intent.EXTRA_SUBJECT, "विषय दर्ज करें"); i.putExtra(इरादा.EXTRA_TEXT, "पाठ दर्ज करें"); यूआरएल)); mWebView.canGoBack(); ( mWebView.goBack() ) ) // डायलर लॉन्च करें यदि (uri.getScheme().equals("tel")) ( Intent i = new Intent(android.content.Intent.ACTION_DIAL); i.setData(uri ) ; स्टार्टएक्टिविटी(i); mWebView.canGoBack(); ( mWebView.goBack() ) // गतिविधि प्रारंभ करें यदि (uri.getScheme().equals("geo")) ।सामग्री) । इरादा.ACTION_VIEW); i.setData(uri); प्रारंभगतिविधि(i); mWebView.canGoBack(); ( mWebView.goBack(); ) ) सही लौटें; () ConnectingToInternet(); mWebView.loadUrl("file:///android_asset/error.png"); mWebView.setWebViewClient(new HelloWebViewClient()); // डिवाइस पर फ़ाइलें डाउनलोड करें mWebView.setDownloadListener(new DownloadListener() ( @Override public void onDownloadStart(final String url, String userAgent, String contentDisposition, String mimetype, long contentLength) (final String fileName = URLUtil.guessFileName(url, contentDisposition) , mimetype); अंतिम AlertDialog.Builder डाउनलोडDialog = new AlertDialog.Builder(MainActivity.this); + "n" + url); ; डाउनलोडडायलॉग .सेटनेगेटिवबटन("नहीं", नया डायलॉगइंटरफेस.ऑनक्लिकलिस्टनर() (सार्वजनिक शून्य ऑनक्लिक(डायलॉगइंटरफेस डायलॉगइंटरफेस, int i) ( ) )); ) // *********************************************** * //***** ******************************** //**** ******** ***************************** सार्वजनिक शून्य ConnectingToInternet ()( //की स्थिति प्राप्त करें इंटरनेट कनेक्शन isInternetPresent = cd.ConnectingToInternet(); //इंटरनेट स्थिति की जाँच करें: यदि (isInternetPresent) ( //एक इंटरनेट कनेक्शन है //do HTTP अनुरोध: ) अन्य ( //कोई इंटरनेट कनेक्शन नहीं Toast.makeText(यह, "इंटरनेट बंद हो गया है!!!", Toast.LENGTH_SHORT).show(); ) ) @SuppressLint("SetJavaScriptEnabled") @Override // सेटिंग्स सार्वजनिक void onResume()( super.onResume(); SharedPreferences sPref = PreferenceManager.getDefaultSharedPreferences(this); if (sPref.getBoolean("img", false)) ( mWebView.getSettings().setLoadsImagesAutomatically(false); ) else ( mWebView .getSettings( .setLoadsImagesAutomatically(true); ) if (sPref.getBoolean("js", false)) ( mWebView.getSettings().setJavaScriptEnabled(false); ) else ( mWebView.getSettings().setJavaScriptEnabled(true); () यह, SaveBmActivity. वर्ग); आशय.putExtra("urlTitle", urlTitle1); प्रारंभ सक्रियता(इरादा); प्रारंभगतिविधि(इरादा); ) // कैश और इतिहास साफ़ करें निजी शून्य clCache())( ClearCache(गतिविधि); mWebView.clearCache(true); mWebView.clearHistory(); Toast.makeText(यह, "कैश और इतिहास साफ़", Toast.LENGTH_SHORT) .show (); ) @Override संरक्षित शून्य onUserLeaveHint() ( super.onUserLeaveHint(); ) @Override सार्वजनिक बूलियन onKeyDown(int keyCode, KeyEvent इवेंट) (// बैक बटन यदि ((keyCode == KeyEvent.KEYCODE_BACK)) mWebView. canGoBack(); ( mWebView.goBack(); ) रिटर्न true; रिटर्न super.onKeyDown(keyCode, इवेंट) // रनिंग प्रोग्राम प्राइवेट बूलियन हैंडलइंटेंट(इंटेंट इंटेंट) का यूआरएल पकड़ें (स्ट्रिंग एक्शन = इंटेंट.गेटएक्शन( ); यदि (Intent.ACTION_VIEW.equals(action)) (स्ट्रिंग url = आशय.getDataString(); Toast.makeText(this, url, Toast.LENGTH_SHORT).show(); mWebView.loadUrl(url); // लोड पृष्ठ सत्य लौटाता है; ) गलत लौटाता है; ) // डाउनलोड प्रबंधक निजी शून्य doDownload (स्ट्रिंग यूआरएल, स्ट्रिंग फ़ाइल नाम) (उरी यूरीओरिजिनल = उरी.पारसे (यूआरएल); प्रयास करें (Toast.makeText(MainActivity.this, "डाउनलोडिंग" + फ़ाइल नाम) , टोस्ट. LENGTH_LONG).शो(); अनुरोध अनुरोध= नया डाउनलोडमैनेजर.Request(Uri.parse(url)); request.setDestinationInExinternalPublicDir(Environment.DIRECTORY_DOWNLOADS, फ़ाइलनाम); अंतिम डाउनलोडमैनेजर डीएम = (डाउनलोडमैनेजर) getSystemService(Context.DOWNLOAD_SERVICE); dm.enqueue(अनुरोध); ) पकड़ें (अपवाद ई) ( Toast.makeText(यह, "त्रुटि", Toast.LENGTH_SHORT).show(); Log.e("", "डाउनलोड करने में समस्या: " + uriOriginal, e); ) ) // खींचें वीडियो पूर्ण स्क्रीन निजी अंतिम WebChromeClient mWebChromeClient = नया WebChromeClient() ( @Override @SuppressWarnings("बहिष्कार") सार्वजनिक शून्य onShowCustomView(दृश्य देखें, int requestOrientation, CustomViewCallback कॉलबैक) ( onShowCustomView(देखें, कॉलबैक); ) @Override सार्वजनिक शून्य onShowCustomView( दृश्य देखें, CustomViewCallback कॉलबैक) (यदि (mFullScreenView != null) ( callback.onCustomViewHidden(); return; ) mFullScreenView = view; mWebView.setVisibility(View.GONE); mFullScreenContainer.setVisibility(View.VISIBLE); mFullScreenContainer.addView( देखें); mFullscreenViewCallback = कॉलबैक; ; mFullScreenContainer.setVisibility(View.GONE); mFullScreenContainer.removeView(mFullScreenView); mFullscreenViewCallback.onCustomViewHidden(); mFullScreenView = शून्य; ) // *********************************************** ******** नेटवर्क पर फ़ाइलें अपलोड करना // Android 3.0+ के लिए openFileChooser सार्वजनिक शून्य openFileChooser(ValueCallback uploadMsg, स्ट्रिंग एक्सेप्ट टाइप) ( // अपडेट संदेश mUploadMessage = uploadMsg; प्रयास करें ( // sdcard फ़ाइल में AndroidExampleFolder बनाएं imageStorageDir = new File(Environment.getExinternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) , "AndroidExampleFolder"); यदि (!imageStorageDir.exists() ) ( // sdcard imageStorageDir.mkdirs() में AndroidExampleFolder बनाएं; ) // कैमरे से कैप्चर की गई छवि फ़ाइल पथ और नाम बनाएं फ़ाइल फ़ाइल= नई फ़ाइल(imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg"); mCapturedImageURI = Uri.fromFile(फ़ाइल); // छवि कैप्चर कैमरा इरादा अंतिम इरादा कैप्चरइंटेंट = नया इरादा(मीडियास्टोर.ACTION_IMAGE_CAPTURE); CaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); इरादा i = नया इरादा(इरादा.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType('image/*'); // एक आशय चयनकर्ता फ़ाइल बनाएं आशय चयनकर्ता आशय = आशय.createChooser(i, "छवि चयनकर्ता"); // फ़ाइलों का चयन करने के लिए कैमरा आशय सेट करेंchooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS , new Parcelable(captureIntent)); // एक छवि का चयन करने के लिए onactivityresult विधि को बायपास करें, गतिविधि विधि को कॉल करेंstartActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE); ) पकड़ें (अपवाद e) ( Toast.makeText(getBaseContext(), "Exception:" + e, Toast.LENGTH_LONG).show(); ) ) // Android के लिए openFileChooser< 3.0 @SuppressWarnings("unused") public void openFileChooser(ValueCallbackuploadMsg) ( openFileChooser(uploadMsg, ""); ) // @SuppressWarnings("unused") सार्वजनिक शून्य openFileChooser(ValueCallback uploadMsg, स्ट्रिंग एक्सेप्ट टाइप, स्ट्रिंग कैप्चर) ( openFileChooser(uploadMsg, एक्सेप्टटाइप); ) सार्वजनिक बूलियन onConsoleMessage(ConsoleMessage सेमी) ( onConsoleMessage(cm.message(), cm.lineNumber(), cm.sourceId()); सही लौटें; ) सार्वजनिक शून्य onConsoleMessage (स्ट्रिंग संदेश, int लाइन नंबर, स्ट्रिंग sourceID) ( //Log.d ("androidruntime", "कंसोल संदेश दिखाएं, डिबगिंग के लिए उपयोग किया जाता है:" + संदेश); ​​); );// End setWebChromeClient // परिणाम प्राप्त करें @SuppressWarnings("unused") निजी ऑब्जेक्ट डेटा; @Override संरक्षित void onActivityResult(int requestCode, int resultCode, Intent data) (if (data == null) ( return; ) String urlPage2 = data.getStringExtra("urlPage2"); mWebView.loadUrl(urlPage2); if (requestCode = = FILECHOOSER_RESULTCODE) (यदि (null == this.mUploadMessage) ( return; ) Uri परिणाम = null; प्रयास करें ( यदि (resultCode != RESULT_OK) ( परिणाम = null; ) अन्यथा ( // यदि इरादा शून्य परिणाम है तो स्वयं के वेरिएबल से पुनः प्राप्त करें = डेटा == शून्य? (परिणाम); mUploadMessage = null ) ) //******************************** सार्वजनिक शून्य लोडएंड () (टोस्ट) .makeText(यह, "फ़ाइल Donwload पर अपलोड की गई", Toast.LENGTH_SHORT).show(); ) // मेनू @Override सार्वजनिक बूलियन onCreateOptionsMenu (मेनू मेनू) ( // मेनू को फुलाएं; यह एक्शन बार में आइटम जोड़ता है मौजूद है। getMenuInflater().inflate(R.menu.main, मेनू); सच लौटें; ) // *********************************************** ******** @ओवरराइड सार्वजनिक बूलियन onOptionsItemSelected(MenuItem आइटम) (स्विच (item.getItemId()) ( मामला android.R.id.home:// होम बटन mWebView.loadUrl('http://yandex.ru'); सच लौटें; केस R.id.item1:// वापस mWebView.canGoBack(); ( mWebView.goBack(); ) सही लौटें; केस R.id.item2: // आगे mWebView.canGoForward(); ( mWebView.goForward(); ) सही लौटें; केस R.id.item3: // पुनः लोड करें mWebView.reload(); ( mWebView.reload(); ) सही लौटें; केस R.id.item4:// कैश साफ़ करें mWebView.clearCache(true); क्लियर कैश (गतिविधि); Toast.makeText(यह, "कैश साफ़ करें।", Toast.LENGTH_SHORT).show(); सच लौटें; केस R.id.item5: mWebView.clearHistory();// स्पष्ट इतिहास Toast.makeText(यह, "इतिहास स्पष्ट है।", Toast.LENGTH_SHORT).show(); सच लौटें; केस R.id.item6: saveBm(mWebView.getUrl(), mWebView.getTitle());// एक बुकमार्क लिखें रिटर्न true; केस R.id.item7:// बुकमार्क बार आशय आशय 1 = नया आशय (यह, SaveBmActivity.class); प्रारंभगतिविधिForResult(इरादा1, 1); सच लौटें; केस R.id.item8: // mWebView.stopLoading() लोड करना बंद करें; सच लौटें; केस R.id.item9: pref();// सेटिंग्स सही लौटती हैं; मामला R.id.item10: // अभी के लिए खाली है, सत्य लौटें; केस R.id.item11:// बाहर निकलें यदि (कैश == 2) ( clCache(); ) ख़त्म(); सच लौटें; डिफ़ॉल्ट: वापसी super.onOptionsItemSelected(आइटम); ) ) @SuppressWarnings("deprecation") @Override public void onDestroy() ( super.onDestroy(); mWebView.stopLoading(); mWebView.clearCache(true); mWebView.clearView(); mWebView.freeMemory(); mWebView. नष्ट(); mWebView = null; ) // कैश साफ़ करें void ClearCache(संदर्भ संदर्भ) ( ClearCacheFolder(context.getCacheDir()); ) void ClearCacheFolder(अंतिम फ़ाइल dir) (if (dir!= null && dir.isDirectory( ) ) ( प्रयास करें ( for (File child:dir.listFiles()) ( //पहले निर्देशिकाओं को पुनरावर्ती रूप से साफ़ करें यदि (child.isDirectory()) ClearCacheFolder(child); अन्यथा //फिर वास्तविक फ़ाइलें child.delete(); ) ) पकड़ना (अपवाद ई) ( ) ) ) )

प्रोजेक्ट डाउनलोड किया जा सकता है

एंड्रॉइड आपको वेब पेज देखने के लिए अपनी खुद की विंडो बनाने या यहां तक ​​कि तत्व का उपयोग करके ब्राउज़र का अपना क्लोन बनाने की अनुमति देता है। तत्व स्वयं WebKit इंजन का उपयोग करता है और इसमें कई गुण और विधियाँ हैं। हम खुद को एक एप्लिकेशन बनाने के बुनियादी उदाहरण तक सीमित रखेंगे जिसके साथ हम इंटरनेट पर पेज देख सकते हैं। में नवीनतम संस्करणक्रोमियम के इंजन का उपयोग किया जाता है, लेकिन साधारण कार्यों के लिए इसमें कोई बड़ा अंतर नहीं है।

आइए एक नया प्रोजेक्ट बनाएं मेरा ब्राउज़रऔर मार्कअप फ़ाइल में कोड को तुरंत बदलें res/लेआउट/activity_main.xml:

अब एक्टिविटी फ़ाइल खोलें MainActivity.javaऔर घटक घोषित करें, और इसे आरंभ भी करें - जावास्क्रिप्ट समर्थन सक्षम करें और लोड करने के लिए पृष्ठ निर्दिष्ट करें।

निजी वेबव्यू वेबव्यू; सार्वजनिक शून्य ऑनक्रिएट (बंडल सेव्डइंस्टेंसस्टेट) (सुपर.ऑनक्रिएट(सेव्डइंस्टेंसस्टेट); setContentView(R.layout.activity_main); वेबव्यू = findViewById(R.id.webView); // जावास्क्रिप्ट समर्थन सक्षम करें webView.getSettings().setJavaScriptEnabled(true) ; // डाउनलोड पेज निर्दिष्ट करें webView.loadUrl('http://site/android');

चूंकि एप्लिकेशन इंटरनेट का उपयोग करेगा, इसलिए आपको मेनिफेस्ट फ़ाइल में इंटरनेट एक्सेस अनुमति सेट करनी होगी।

वहां मैनिफ़ेस्ट में हम अपने एप्लिकेशन से शीर्षक हटाकर (बोल्ड में) स्क्रीन के लिए लाइन को संशोधित करते हैं:

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

आइए एप्लिकेशन लॉन्च करें। अब हमारे पास एक साधारण वेब पेज व्यूअर है, लेकिन एक खामी के साथ। यदि आप किसी भी लिंक पर क्लिक करते हैं, तो आपका डिफ़ॉल्ट ब्राउज़र स्वचालित रूप से लॉन्च हो जाएगा और नया पेज वहां प्रदर्शित होगा। अधिक सटीक रूप से, यह पहले भी ऐसा ही था। नए उपकरणों पर, जब आप एप्लिकेशन लॉन्च करते हैं, तो ब्राउज़र तुरंत खुल जाता है।

इस समस्या को हल करने और अपने प्रोग्राम में लिंक खोलने के लिए, आपको कक्षा को ओवरराइड करना होगा वेबव्यूक्लाइंटऔर हमारे एप्लिकेशन को लिंक संभालने दें। आइए कोड में एक नेस्टेड क्लास जोड़ें:

प्राइवेट क्लास MyWebViewClient WebViewClient का विस्तार करता है ( @TargetApi(Build.VERSION_CODES.N) @Override सार्वजनिक बूलियन thinkOverrideUrlLoading(WebView view, WebResourceRequest request) ( view.loadUrl(request.getUrl().toString()); return true; ) // For पुराने डिवाइस @Override सार्वजनिक बूलियन चाहिएOverrideUrlLoading(WebView view, String url) ( view.loadUrl(url); return true; ) )

फिर विधि में ऑनक्रिएट()आइए एक उदाहरण को परिभाषित करें MyWebViewClient. ऑब्जेक्ट आरंभ होने के बाद इसे कहीं भी स्थित किया जा सकता है:

WebView.setWebViewClient(नया MyWebViewClient());

अब हमारे एप्लिकेशन में बनाया गया है वेबव्यूक्लाइंट, जो ब्राउज़र लॉन्च करने के बजाय चयनित किसी भी निर्दिष्ट यूआरएल को कंटेनर में ही लोड करने की अनुमति देता है। इस कार्यक्षमता के लिए विधि जिम्मेदार है, जिसमें हम वर्तमान और वांछित यूआरएल निर्दिष्ट करते हैं। प्रतिलाभ की मात्रा सत्यइसका मतलब है कि हमें किसी तृतीय-पक्ष ब्राउज़र को लॉन्च करने की आवश्यकता नहीं है, लेकिन हम लिंक से सामग्री को स्वतंत्र रूप से डाउनलोड करेंगे। संस्करण एपीआई 24 में, विधि का एक अतिभारित संस्करण जोड़ा गया था, कृपया इसे ध्यान में रखें।

प्रोग्राम को पुनः लॉन्च करें और सुनिश्चित करें कि लिंक अब एप्लिकेशन में ही लोड हो गए हैं। लेकिन अब एक और समस्या खड़ी हो गई है. हम पिछले पृष्ठ पर वापस नहीं जा सकते. यदि हम अपने डिवाइस पर बैक बटन दबाते हैं, तो हम अपना एप्लिकेशन बंद कर देंगे। नई समस्या को हल करने के लिए, हमें BACK बटन दबाने की आवश्यकता है। एक नई विधि जोड़ें:

@ओवरराइड सार्वजनिक शून्य onBackPressed() ( if(webView.canGoBack()) ( webView.goBack(); ) else ( super.onBackPressed(); ) )

हमें यह जांचना होगा कि पिछले पृष्ठ पर नेविगेशन का क्या समर्थन करता है। यदि स्थिति सत्य है तो विधि को कॉल किया जाता है वापस जाओ(), जो हमें पिछले पृष्ठ पर एक कदम पीछे ले जाता है। यदि ऐसे कई पृष्ठ हैं, तो हम क्रमिक रूप से पहले पृष्ठ पर लौट सकते हैं। इस मामले में, विधि हमेशा मान वापस कर देगी सत्य. जब हम पहले पन्ने पर लौटते हैं जहां से हमने इंटरनेट पर अपनी यात्रा शुरू की थी, तो मूल्य वापस आ जाएगा असत्यऔर बैक बटन दबाने पर सिस्टम द्वारा ही कार्रवाई की जाएगी, जिससे एप्लिकेशन स्क्रीन बंद हो जाएगी।

एप्लिकेशन को दोबारा लॉन्च करें. अब आपके पास अपना स्वयं का वेब ब्राउज़र है, जो आपको लिंक का अनुसरण करने और पिछले पृष्ठ पर लौटने की अनुमति देता है। दस्तावेज़ीकरण का अध्ययन करने के बाद, आप एप्लिकेशन को अपने ब्राउज़र के लिए अन्य स्वादिष्ट चीज़ों से लैस कर सकते हैं।

यदि आप चाहते हैं कि आपकी साइट पर जाने वाले कुछ लिंक ब्राउज़र में खोले जाएं, और स्थानीय लिंक एप्लिकेशन में खोले जाएं, तो अलग-अलग रिटर्न मानों के साथ एक शर्त का उपयोग करें।

सार्वजनिक वर्ग MyWebViewClient WebViewClient का विस्तार करता है ( @Override सार्वजनिक बूलियन चाहिएOverrideUrlLoading(WebView view, String url) ( if(Uri.parse(url).getHost()..ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity (इरादा); सच लौटें;

एक सार्वभौमिक विधि जो एप्लिकेशन में सभी स्थानीय लिंक खोलेगी, बाकी ब्राउज़र में (हम एक पंक्ति बदलते हैं):

सार्वजनिक वर्ग MyAppWebViewClient WebViewClient का विस्तार करता है ( @Override सार्वजनिक बूलियन चाहिएOverrideUrlLoading(WebView दृश्य, स्ट्रिंग url) ( if(Uri.parse(url).getHost().length() == 0)(झूठी वापसी;) इरादा इरादा = नया इरादा (इरादा.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(इरादा); सच लौटें; ) )

अब उदाहरण को थोड़ा जटिल बनाते हैं ताकि उपयोगकर्ता के पास मानक ब्राउज़र का विकल्प हो।

इसे स्पष्ट करने के लिए, आइए उदाहरण को निम्नानुसार पुनर्व्यवस्थित करें। दो गतिविधियां बनाएं. पहली गतिविधि पर, दूसरी गतिविधि पर जाने के लिए एक बटन रखें, और दूसरी गतिविधि पर, एक घटक रखें।

मेनिफेस्ट में हम दूसरी गतिविधि के लिए एक फ़िल्टर निर्दिष्ट करते हैं।

दूसरी गतिविधि पर जाने के लिए बटन के लिए कोड।

सार्वजनिक शून्य ऑनक्लिक (दृश्य देखें) ( आशय आशय = नया आशय ("ru.alexanderklimov.Browser"); आशय.सेटडेटा (Uri.parse ("http://site/android/")); प्रारंभ सक्रियता (आशय); )

हमने एक फ़िल्टर के साथ अपना स्वयं का इरादा बनाया और डेटा प्रदान किया - वेबसाइट का पता।

दूसरी गतिविधि को डेटा प्राप्त करना चाहिए:

पैकेज ru.alexanderklimov.testapplication; आयात android.net.Uri; आयात android.support.v7.app.AppCompatActivity; android.os.बंडल आयात करें; आयात android.webkit.WebView; आयात android.webkit.WebViewClient; पब्लिक क्लास सेकेंडएक्टिविटी AppCompatActivity का विस्तार करती है ( @Override protected void onCreate(Bundle savingInstanceState) ( super.onCreate(saveledInstanceState); setContentView(R.layout.activity_third); उरी यूआरएल = getIntent().getData();वेबव्यू वेबव्यू = findViewById(R.id.webView); webView.setWebViewClient(नया कॉलबैक()); webView.loadUrl(url.toString()); ) प्राइवेट क्लास कॉलबैक WebViewClient का विस्तार करता है ( @Override सार्वजनिक बूलियन thinkOverrideUrlLoading (WebView view, String url) ( return(false); ) ) )

दूसरी गतिविधि के फ़िल्टर में, हमने दो क्रियाएँ निर्दिष्ट कीं।

इसका मतलब यह है कि कोई भी गतिविधि (पढ़ें: एप्लिकेशन) आपकी मिनी-ब्राउज़र गतिविधि को उसी तरह से ट्रिगर कर सकती है। स्टूडियो में किसी भी पुराने प्रोजेक्ट को एक अलग विंडो में लॉन्च करें या एक नया बनाएं और उसमें एक बटन जोड़ें और वही कोड लिखें जो हमने बटन पर क्लिक करने के लिए इस्तेमाल किया था।

दूसरा एप्लिकेशन लॉन्च करें (पहला एप्लिकेशन बंद किया जा सकता है) और बटन पर क्लिक करें। आप पहला एप्लिकेशन स्टार्ट स्क्रीन से शुरू नहीं करेंगे, बल्कि तुरंत दूसरी गतिविधि एक मिनी-ब्राउज़र से शुरू करेंगे। इस तरह, कोई भी एप्लिकेशन आपकी गतिविधि के क्लास नाम को जाने बिना, केवल स्ट्रिंग का उपयोग करके ब्राउज़र लॉन्च कर सकता है "ru.alexanderklimov.ब्राउज़र", को प्रेषित इरादा. इस स्थिति में, आपकी ब्राउज़र गतिविधि में एक डिफ़ॉल्ट श्रेणी और डेटा होना चाहिए। मैं तुम्हें याद दिलाना चाहता हूं:

आप अपनी स्ट्रिंग को एक स्ट्रिंग स्थिरांक के रूप में प्रस्तुत कर सकते हैं और अपने ब्राउज़र के सभी संभावित उपयोगकर्ताओं को बता सकते हैं कि वे इसे अपने लिए कैसे चला सकते हैं। लेकिन एंड्रॉइड के पास पहले से ही ऐसा रेडीमेड कॉन्स्टेंट मौजूद है ACTION_VIEW, जो दस्तावेज़ीकरण के अनुसार निम्नलिखित है:

सार्वजनिक स्थैतिक अंतिम java.lang.String ACTION_VIEW = "android.intent.action.VIEW";

आइए दूसरे एप्लिकेशन में बटन के लिए कोड को फिर से लिखें

आशय(android.content.Intent.ACTION_VIEW, Uri.parse("http://site/android/")); प्रारंभगतिविधि(इरादा);

इस बार क्या होगा? हमें याद है कि हमारे पास दो कार्य निर्धारित हैं, जिनमें शामिल हैं android.intent.action.VIEW. इसका मतलब यह है कि जब कोई उपयोगकर्ता एप्लिकेशन इस कोड का उपयोग करता है तो ब्राउज़र के साथ हमारे पहले एप्लिकेशन को भी इस कमांड को पहचानना होगा। एमुलेटर के पास कम से कम एक ऐसा "ब्राउज़र" प्रोग्राम है, और अब पहले एप्लिकेशन से हमारी दूसरी गतिविधि इसमें जोड़ दी गई है। स्क्रीन पर दो एप्लिकेशन का विकल्प दिखाई देगा।

और यदि आप सभी वैकल्पिक ब्राउज़र हटा दें और केवल अपना प्रोग्राम छोड़ दें, तो कोई विकल्प नहीं बचेगा। आपका ब्राउज़र मुख्य बन जाएगा. और यदि कोई एप्लिकेशन निर्दिष्ट तरीके से एक वेब पेज लॉन्च करना चाहता है, तो आपका प्रोग्राम खुल जाएगा।

एक छोटा सा नोट. यदि आप अंतिम पंक्ति को इसके साथ प्रतिस्थापित करते हैं:

स्टार्टएक्टिविटी(इरादा.createChooser(इरादा, "म्याऊ..."));

फिर प्रोग्राम चयन विंडो में, शीर्ष पंक्ति "ओपन विथ" या उसके स्थानीय अनुवाद के बजाय, आपकी पंक्ति दिखाई देगी। लेकिन ये मुख्य बात नहीं है. यदि किसी कारण से डिवाइस पर एक भी ब्राउज़र नहीं है, तो कोड का यह संस्करण मूल संस्करण के विपरीत, एप्लिकेशन को क्रैश करने का कारण नहीं बनेगा। इसलिए, विश्वसनीयता के लिए प्रस्तावित विकल्प का उपयोग करें।

आइए एक नया एप्लिकेशन बनाएं - एंड्रॉइड उपकरणों के लिए एक ब्राउज़र, अपने हाथों से, यह दिलचस्प होगा, और बहुत सारे कोड नहीं होंगे।

एंड्रॉइड के लिए ब्राउज़र ऐप

आइए एंड्रॉइड स्टूडियो लॉन्च करें और एक नया प्रोजेक्ट बनाएं, एप्लिकेशन का नाम माई साइट, अपने विवेक पर कंपनी का डोमेन, मैंने वेबसाइट डोमेन साइट में प्रवेश किया। नेक्स्ट पर क्लिक करें, अगले टैब पर हम सब कुछ अपरिवर्तित छोड़ देते हैं, नेक्स्ट पर क्लिक करते हैं, फिर अगला पहले से ही चयनित होता है खाली गतिविधि, हम इसे छोड़ देंगे, फिर अंतिम टैब में हम लेआउट नाम को गतिविधि_मेन से मुख्य में बदल देंगे, और फिनिश पर क्लिक करेंगे।

एंड्रॉइड स्टूडियोप्रोजेक्ट फाइलें तैयार करेंगे, इसमें कुछ समय लगेगा। मुख्य विंडो में दो फ़ाइलें खुलेंगी, मुख्य.xmlऔर MainActivity.java, आइए बाद में काम करना शुरू करें। आइए विस्तारित AppCompactActivity को गतिविधि में बदलें और सहेजें।

मेनिफेस्ट में अनुमतियाँ जोड़ना

फिर फ़ाइल खोलें AndroidManifest.xmlऔर पहले अनुभाग के बाद एक कस्टम अनुमति जोड़ें उपयोगकर्ता-अनुमति,

ताकि हमारे एप्लिकेशन की इंटरनेट तक पहुंच हो। आइए AndroidManifest.xml को सहेजें और बंद करें।

चलो फाइल पर चलते हैं मुख्य.xml, यह पथ res/layout/main.xml पर स्थित है, लाइन हटाएं android:text='हैलो वर्ड!' पूरी तरह से, टेक्स्टव्यू को वेबव्यू में बदलें, मुख्य रिलेटिवलेआउट परत के गुणों से अनावश्यक पैडिंग (पैडिंगबॉटम, पैडिंगलेफ्ट, पैडिंगराइट, पैडिंगटॉप) हटा दें।

WebView के लिए, android:id='@+id/webView' प्रॉपर्टी जोड़ें, android:layout_width='wrap_content' और android:layout_height='wrap_content' को android:layout_width='match_parent' और android:layout_height='match_parent' में बदलें। , ताकि हमारा WebView तत्व पूरी स्क्रीन को भर दे।

जावा में कोड तर्क

हमने main.xml फ़ाइल का काम पूरा कर लिया है, चलिए आगे बढ़ते हैं MainActivity.java. आइए एक वेरिएबल जोड़ें wvप्रकार वेब-दृश्य, हम इसमें एक तत्व निर्दिष्ट करेंगे, इसे findViewById() फ़ंक्शन का उपयोग करके ढूंढेंगे, wv सेटिंग्स का वर्णन करेंगे, विशेष रूप से, वेबव्यू को जावा स्क्रिप्ट निष्पादित करने की अनुमति देंगे, साइट को हमारे ब्राउज़र में लोड करने के लिए पता इंगित करेंगे, उदाहरण के लिए, मैं लोड यूआरएल ("http:// ya.ru") फ़ंक्शन का उपयोग करके यांडेक्स लॉन्च करूंगा।

सार्वजनिक वर्ग MainActivity गतिविधि का विस्तार करता है ( WebView wv; @Override protected void onCreate(Bundle savingInstanceState) ( super.onCreate(sagedInstanceState); setContentView(R.layout.main); wv = (WebView)findViewById(R.id.webView); WebSettings सेटिंग्स = wv.getSettings(); सेटिंग्स.setJavaScriptEnabled(true); wv..setWebViewClient(new WebViewClient());

नीचे हम डिवाइस पर बैक बटन दबाने की प्रोसेसिंग भी लिखेंगे।

@ओवरराइड सार्वजनिक शून्य onBackPressed())( if(wv.canGoBack())( wv.goBack(); )else( super.onBackPressed(); ) )

एमुलेटर में एप्लिकेशन चलाना

स्टार्ट बटन पर क्लिक करें, यह टूलबार पर एक हरा त्रिकोण है एंड्रॉइडस्टूडियो, हमारा एमुलेटर शुरू हो जाएगा, और अगर सब कुछ सही ढंग से किया जाता है, तो थोड़ी देर बाद ब्राउज़र में यांडेक्स खोज शुरू हो जाएगी, आप वर्चुअल कीबोर्ड पर क्लिक कर सकते हैं और कुछ खोज सकते हैं, सब कुछ ठीक से काम करता है।

आइए लाल आयत पर क्लिक करके एमुलेटर को बंद किए बिना प्रोग्राम को बंद करें, यह स्टार्ट के बजाय स्टॉप है, पते को मनमाने ढंग से बदलें, मैं अपनी साइट "https://site" को "प्रमोट" करूंगा,

मैं सेव पर क्लिक करूंगा और प्रोग्राम को फिर से चलाऊंगा, इस बार सब कुछ तेजी से होगा, मैं साइट के चारों ओर घूमूंगा, एंड्रॉइड के लिए प्रोग्रामिंग अनुभाग में एंड्रॉइडस्टूडियो को इंस्टॉल और कॉन्फ़िगर करने, एंड्रॉइड एमुलेटर बनाने और कैसे पर लेख और वीडियो हैं कार्यक्रमों के सरल उदाहरण.

AndroidManifest.xml का पूरा पाठ

Main.xml का पूरा पाठ

MainActivity.java का पूरा पाठ

पैकेज ru.maxfad.mysite; आयात android.app.Activity; android.os.बंडल आयात करें; android.webkit.WebSettings आयात करें; आयात android.webkit.WebView; आयात android.webkit.WebViewClient; सार्वजनिक वर्ग MainActivity गतिविधि का विस्तार करता है ( WebView wv; @Override protected void onCreate(Bundle savingInstanceState) ( super.onCreate(sagedInstanceState); setContentView(R.layout.main); wv = (WebView)findViewById(R.id.webView); WebSettings सेटिंग्स = wv.getSettings(); सेटिंग्स.setJavaScriptEnabled(true); wv..setWebViewClient(new WebViewClient()); )अन्यथा(super.onBackPressed(); ) ) )

यह वीडियो विस्तार से दिखाता है कि Android उपकरणों के लिए ब्राउज़र एप्लिकेशन कैसे बनाएं:

हमने पहले से ही अपने आप को पूरी तरह से व्यक्तिगत सॉफ्टवेयर प्रदान करना शुरू कर दिया है, अपने अद्भुत कैलकुलेटर और कनवर्टर को याद रखें। और इस पाठ में हम सीखेंगे कि इंटरनेट पर सर्फ करने के लिए एक सरल ब्राउज़र कैसे बनाया जाए। सहमत हूं, अपने ब्राउज़र पर वेब सर्फ करना ओपेरा या क्रोम पर करने की तुलना में कई गुना अधिक सुखद है (शायद ही अधिक सुविधाजनक, लेकिन अधिक सुखद :))। हम एक नया प्रोजेक्ट बना रहे हैं, परंपरागत रूप से नाम स्वयं चुनें। निजी तौर पर, मैं हर बार सब कुछ नए सिरे से नहीं बनाता, बल्कि मेरे पास जो है उसे खोलता हूं और तब तक सारे कोड को साफ कर देता हूं आरंभिक राज्यरिक्त गतिविधि. वही करें जो आपके लिए सबसे सुविधाजनक हो.

तो, आइए हम बाद के कार्य के दायरे और विशिष्टताओं को संक्षेप में रेखांकित करें। हमें एक तत्व बनाने की जरूरत है , जिसमें सब कुछ होगा, वह कोड लिखें जो हमारा व्यक्तिगत वेब ब्राउज़र बनाता है, उसे व्यवस्थित करें बुनियादी कार्यों, मेनिफेस्ट फ़ाइल में इंटरनेट का उपयोग करने के लिए हमारे एप्लिकेशन के लिए अनुमति पंजीकृत करें, और एक हार्डवेयर बटन क्लिक हैंडलर लिखें "पीछे"डिवाइस पर (अर्थात, जब हम इस बटन पर क्लिक करेंगे तो हमारे ब्राउज़र में क्या होगा)।

चलो शुरू करें। फ़ाइल खोलें गतिविधि_मेन.xml. हम वहां एक एकल तत्व बनाते हैं , जो हमारे लिए एक वेब ब्राउज़र लागू करने के लिए काफी है:

< WebView xmlns: android= "http://schemas.android.com/apk/res/android"एंड्रॉइड: लेआउट_हाइट = "मैच_पेरेंट" एंड्रॉइड: लेआउट_विड्थ = "मैच_पैरेंट" एंड्रॉइड: आईडी = "@+आईडी/वेब" />

लेआउट विंडो इस तरह दिखेगी:

उसके बाद, आइए तुरंत फ़ाइल से निपटें AndroidManifest.xml. इसे खोलें और वहां दो लाइनें जोड़ें, एक एप्लिकेशन को इंटरनेट का उपयोग करने की अनुमति है, दूसरा एप्लिकेशन की शैली बदल रहा है, या एप्लिकेशन के "शीर्षक" पैनल (एप्लिकेशन शीर्षक वाला पैनल) को क्रम में छिपा रहा है। पृष्ठों को प्रदर्शित करने के लिए ब्राउज़र विंडो को अधिक स्थान प्रदान करना।

हम इंटरनेट का उपयोग करने की अनुमति के लिए एक पंक्ति लिखते हैं पहलेउद्घाटन टैग ...:

< uses- permission android: name= "android.permission.INTERNET" / >

अब अपनी सेटिंग लाइन में जोड़ें गतिविधिहेडर को छिपाने का आदेश (नीचे की पंक्ति बोल्ड में, यह भी इसमें है AndroidManifest.xml):

< activity android: name= ".MainActivity" android: label= एंड्रॉइड: थीम = "@android:style/Theme.NoTitleBar" >

अब काम के सबसे महत्वपूर्ण और जिम्मेदार हिस्से पर चलते हैं - जावा कोड लिखना। MainActivity.java फ़ाइल खोलें और निम्नलिखित लिखें (जिन लोगों ने ध्यान नहीं दिया उनके लिए // चिह्नों के बाद कोड में स्पष्टीकरण दिए गए हैं):

पैकेज होम.मायएप्लिकेशन; आयात android.app.Activity ; android.app.AlertDialog आयात करें; आयात android.content.ContentValues ​​​​; आयात android.content.Intent ; android.database.Cursor आयात करें; आयात android.database.sqlite.SQLiteDatabase; आयात android.database.sqlite.SQLiteOpenHelper; आयात android.support.v7.app.ActionBarActivity; android.os.Bundle आयात करें; आयात android.util.Log ; आयात android.view.KeyEvent ; आयात android.view.Menu ; आयात android.view.MenuItem ; आयात android.view.View ; आयात android.webkit.WebView ; आयात android.webkit.WebViewClient ; android.widget.Button आयात करें; android.widget.EditText आयात करें; आयात android.widget.RadioButton; आयात android.widget.TextView ; सार्वजनिक वर्ग MainActivity गतिविधि का विस्तार करता है ( // WebView प्रकार का एक वेरिएबल घोषित करेंनिजी वेबव्यू एमवेब; // वेब ब्राउज़र (WebViewClient) प्रकार का एक वर्ग बनाएं, जिसे हम कॉन्फ़िगर करते हैं // डिफ़ॉल्ट रूप से इस वर्ग के सभी लिंक को संसाधित करने की अनुमति, // बिना एक्सेस किए तीसरे पक्ष के कार्यक्रम: प्राइवेट क्लास वेबव्यूअर वेबव्यूक्लाइंट ((वेबव्यू व्यू, स्ट्रिंग यूआरएल) (व्यू. लोडयूआरएल(यूआरएल); रिटर्न ट्रू; )) को बढ़ाता है। // घोषित वेबव्यू प्रकार वेरिएबल को हमारे द्वारा बनाए गए वेरिएबल से बांधें //activity_main.xml फ़ाइल में WebView तत्व के लिए: mWeb= (WebView )findViewById(R . id. web); // हम इस तत्व के लिए जावा स्क्रिप्ट के लिए समर्थन सक्षम करते हैं:एमवेब. गेटसेटिंग्स()। setJavaScriptEnabled(सत्य); // एक पेज सेट करें जो स्टार्टअप पर लोड होगा, आप कोई भी दर्ज कर सकते हैं:एमवेब. लोडयूआरएल( "http://developeroleg.ucoz.ru/"); // हमारे वेबव्यू तत्व के लिए एक ब्राउज़र सेट करें, जो हमने ऊपर बनाया है उसे कनेक्ट करें // वेब क्लाइंट जिसके साथ पेज देखे जाएंगे:एमवेब. setWebViewClient(नया वेबव्यूअर()); ) // हम डिवाइस पर बैक बटन के क्लिक को प्रोसेस करने के लिए कोड लिखते हैं, जो हमें प्रेस करने की अनुमति देगा // केवल एप्लिकेशन बंद करने के बजाय, पिछले पृष्ठ पर जाने के लिए "बैक" बटन का उपयोग करें। // यह "बैक" बटन से तभी बंद होगा जब हम प्रारंभ पृष्ठ पर होंगे // ऊपर दर्शाया गया पेज:@ओवरराइड सार्वजनिक शून्य onBackPressed() ( यदि (mWeb. canGoBack()) ( mWeb. goBack();) अन्यथा ( super. onBackPressed() ) ) )

बस इतना ही! वास्तव में, सब कुछ काफी सरल है और कुछ काम के बाद हमारे पास अपना ब्राउज़र होता है, बेशक यह काफी सरल है और इसमें कोई विकल्प नहीं है, लेकिन यह ऐसे एप्लिकेशन बनाने के सार को समझने के लिए काफी है।

एंड्रॉइड डिवाइस पर मानक ब्राउज़र अक्सर मांग करने वाले उपयोगकर्ताओं की रोजमर्रा की जरूरतों को पूरा नहीं करते हैं। इस में ऑपरेटिंग सिस्टमबहुत सारे उच्च गुणवत्ता वाले और कार्यात्मक इंटरनेट ब्राउज़र हैं। हमने एकत्र कर लिया है सर्वोत्तम ब्राउज़रइस आलेख में Android के लिए.

फ़ायरफ़ॉक्स एंड्रॉइड पर सर्वश्रेष्ठ मोबाइल ब्राउज़रों में से एक का शीर्षक रखता है। इस ऑपरेटिंग सिस्टम पर उपस्थिति के वर्षों में, मोज़िला के विकास ने बहुत सारे फ़ंक्शन हासिल किए हैं और एक बेहतर आधुनिक इंटरफ़ेस प्राप्त किया है। एंड्रॉइड के लिए फ़ायरफ़ॉक्स कार्यक्षमता, सुविधा और उपयोग की गति का संतुलन है। मोज़िला का मोबाइल ब्राउज़र गति में उससे कमतर है गूगल क्रोम, लेकिन फ़ायरफ़ॉक्स की कई विशेषताओं को और अधिक सुखद और सुविधाजनक बनाया गया है।

फ़ायरफ़ॉक्स का अपना गेको इंजन लगभग सभी आधुनिक वेब मानकों का समर्थन करता है, और ब्राउज़र के डेस्कटॉप संस्करण की तरह, इसके लिए अतिरिक्त कार्यक्षमता वाले एक्सटेंशन भी हैं। फ़िफ़ॉक्स के मुख्य कार्यों में: एक विशेष खाते का उपयोग करके ब्राउज़रों के बीच सभी डेटा का सिंक्रनाइज़ेशन, सुरक्षित सर्फिंग, सुविधाजनक स्टार्ट पैनल, बहुत सारे एक्सटेंशन, रीडिंग मोड।



न केवल कंप्यूटर पर, बल्कि कंप्यूटर पर भी सबसे लोकप्रिय ब्राउज़र मोबाइल उपकरणोंआह गूगल क्रोम है. आश्चर्य की बात नहीं है, क्योंकि यह लगभग हमेशा सबसे लोकप्रिय मोबाइल ओएस पर पहले से इंस्टॉल होता है। क्रोम ने उचित रूप से अपनी लोकप्रियता हासिल की है - यह तेज़, अपेक्षाकृत कार्यात्मक, सरल और सुविधाजनक है, और यह अच्छी तरह से एकीकृत भी है गूगल सेवाएँऔर ब्राउज़र का डेस्कटॉप संस्करण (डेटा और टैब का पूर्ण सिंक्रनाइज़ेशन है)। Google सेवाओं के साथ एकीकरण कभी-कभी उपयोगी हो सकता है, उदाहरण के लिए - पृष्ठों पर पाठ का अनुवाद करना Google का उपयोग करनाअनुवादक या ध्वनि खोज.

क्रोम उपयोगकर्ता सुरक्षा का भी ख्याल रखता है - ब्राउज़र में उन साइटों के लिए एक अंतर्निहित फ़िल्टर होता है जो एंड्रॉइड डिवाइस के लिए खतरनाक हो सकते हैं। किसी प्रकार की डेटा संपीड़न तकनीक है। यह ओपेरा जितना उत्तम नहीं है, लेकिन फिर भी यह वाई-फाई और मोबाइल इंटरनेट दोनों पर प्रसारित होने वाले बहुत सारे डेटा को बचाता है। गुमनाम रूप से साइटों पर जाने के लिए एक गुप्त मोड है। शायद क्रोम ऑन का एकमात्र दोष इस पल- विस्तार समर्थन की कमी. जो लोग सभी नई सुविधाओं को पहले आज़माना चाहते हैं, उनके लिए क्रोम बीटा और डेव मौजूद है। ये ब्राउज़र संस्करण तेजी से और अधिक बार अपडेट किए जाते हैं - इनमें सभी नवाचारों का परीक्षण किया जाता है।



नॉर्वेजियन कंपनी ओपेरा के मोबाइल ब्राउज़र भी बाज़ार में सबसे लोकप्रिय, कार्यात्मक और सबसे तेज़ी से बढ़ने वाले ब्राउज़रों में से एक हैं। एंड्रॉइड प्लेटफार्म. अपने काम के कई वर्षों में, ये लोग निश्चित रूप से स्मार्टफोन और टैबलेट के लिए लगभग एक आदर्श इंटरनेट ब्राउज़र का फॉर्मूला तैयार करने में सक्षम हुए हैं। ओपेरा में आपकी ज़रूरत की लगभग सभी चीज़ें मौजूद हैं औसत उपयोगकर्ता के लिए: तेज़ सर्फिंग, सुविधाजनक क्लासिक एक्सप्रेस पैनल, डेस्कटॉप संस्करण के साथ डेटा सिंक्रोनाइज़ेशन, अनाम मोड, एड्रेस पैनल से संकेतों के साथ सुविधाजनक खोज, और मुख्य विशेषताओं में से एक ट्रैफ़िक संपीड़न है।

ओपेरा के लोगों ने ट्रैफ़िक बचत तकनीकों के साथ अपना सर्वश्रेष्ठ प्रयास किया है। टर्बो मोड सक्रिय होने पर मोबाइल ओपेरा मोबाइल इंटरनेट लागत को दो या तीन गुना तक कम कर सकता है। उन लोगों के लिए जिनके लिए ट्रैफ़िक खपत विशेष रूप से महत्वपूर्ण है, ओपेरा मिनी है - इसमें, बचत डिफ़ॉल्ट रूप से सक्षम है, लेकिन कभी-कभी यह इससे ग्रस्त होती है उपस्थितिसाइटें साथ ही, मिनी संस्करण नियमित ओपेरा की तुलना में बहुत हल्का और तेज़ है। इसी नाम के ब्राउज़र का एक और मजबूत बिंदु इसकी सुंदर और सुखद उपस्थिति है। ओपेरा हमेशा ब्राउज़रों में सबसे स्टाइलिश इंटरफेस में से एक के लिए प्रसिद्ध रहा है। अगर आप अपने डिवाइस पर सारा ट्रैफिक कंप्रेस करना चाहते हैं तो एप्लिकेशन पर ध्यान दें।



डॉल्फिन एंड्रॉइड के लिए एक वैकल्पिक ब्राउज़र है जिसमें कई अतिरिक्त सुविधाएं और कार्यक्षमताएं हैं। इनमें से, एडोब फ्लैश के लिए समर्थन ध्यान देने योग्य है, जिसे लगभग सभी ने छोड़ दिया है, लेकिन अभी भी कई स्थानों पर उपयोग किया जाता है, इंटरफ़ेस बदलने के लिए विभिन्न थीम का उपयोग, अद्वितीय ऐड-ऑन के लिए समर्थन और सुविधाजनक और सरल इशारों का नियंत्रण . यह सब तुरंत उपलब्ध है - नहीं अतिरिक्त सेटिंग्स. डॉल्फिन भी तेज़, सुरक्षित, मुफ़्त और हमेशा अद्यतित है - डेवलपर्स लगभग हर हफ्ते ब्राउज़र अपडेट जारी करते हैं।


पफिन एक मोबाइल वेब ब्राउज़र है जो डॉल्फिन की अवधारणा के समान है। यहां भी, एक सुंदर और सुविधाजनक इंटरफ़ेस है, कई संभावनाएं हैं, और पफिन "डॉल्फ़िन" जितना तेज़ है। मूल रूप से, पफिन ब्राउज़र कमजोर उपकरणों के लिए उपयुक्त है, क्योंकि यह "हल्के" वेब सर्फिंग के लिए एक विशेष तकनीक प्रदान करता है - पेज पहले लोड किए जाते हैं क्लाउड सेवापफिन, वे वहां अनुकूलित होते हैं और डिवाइस स्क्रीन पर हल्के रूप में दिखाई देते हैं। साथ ही, पृष्ठों की गुणवत्ता और उपस्थिति व्यावहारिक रूप से टूटे हुए लेआउट या कम गुणवत्ता से प्रभावित नहीं होती है।

पफिन में कई अतिरिक्त विशेषताएं भी ध्यान देने योग्य हैं:

  • गेम के लिए पूर्ण Adobe फ़्लैश समर्थन (स्क्रीन पर वर्चुअल जॉयस्टिक);
  • क्लाउड सेवा के माध्यम से ट्रैफ़िक एन्क्रिप्शन;
  • माउस अनुकरण;
  • फ़ाइलों को पहले क्लाउड पर और फिर डिवाइस पर अपलोड करने की क्षमता;
  • एक्सटेंशन स्थापित करना;
  • इंटरफ़ेस थीम.
पफिन ब्राउज़र कमजोर उपकरणों के लिए एक उत्कृष्ट विकल्प है, लेकिन इस इंटरनेट ब्राउज़र में कार्यक्षमता सीमित नहीं है।



रूसी कंपनी यांडेक्स एंड्रॉइड मोबाइल उपकरणों के लिए अपना स्वयं का ब्राउज़र बनाने में सफल रही है। इस प्लेटफ़ॉर्म के लिए Yandex.Browser CIS के उपयोगकर्ताओं के लिए एक उत्कृष्ट समाधान है। यह इंटरनेट ब्राउज़र पूरी तरह से Yandex और अन्य स्थानीय सेवाओं के साथ एकीकरण से परिपूर्ण है सोशल नेटवर्क/ पोर्टल्स। उदाहरण के लिए, ब्राउज़र में खोज बार आवश्यक साइटों का सुझाव देता है और प्रश्नों को पूरी तरह से समझता है, और एप्लिकेशन के अंदर आप मौसम और ट्रैफ़िक जाम के बारे में जानकारी भी देख सकते हैं।



मित्रों को बताओ