Kaip atidaryti „Android“ naršyklės URL iš mano programos?

Kaip atidaryti URL kodą įterptinėje žiniatinklio naršyklėje, o ne mano paraiškoje?

Bandžiau:

 try { Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link)); startActivity(myIntent); } catch (ActivityNotFoundException e) { Toast.makeText(this, "No application can handle this request." + " Please install a webbrowser", Toast.LENGTH_LONG).show(); e.printStackTrace(); } 

bet aš turiu išimtį:

 No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com 
1073
04 февр. nustatė Arutha vasario 04 d 2010-02-04 20:51 '10 ne 20:51 2010-02-04 20:51
@ 28 atsakymai

Pabandykite atlikti šiuos veiksmus:

 Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(browserIntent); 

Tai puikiai tinka man.

Kalbant apie trūkstamą „http: //“, tiesiog norėčiau tai padaryti:

 if (!url.startsWith("http://")  !url.startsWith("https://")) url = "http://" + url; 

Aš taip pat tikriausiai iš anksto užpildiau „EditText“, kurį naudotojas įveda su „http: //“.

2037 m
04 февр. Atsakymą pateikė Mark B 04 Feb. 2010-02-04 21:01 '10 ne 21:01 2010-02-04 21:01

Paprastas būdas tai pasiekti yra su šiuo kodu:

 String url = "http://www.stackoverflow.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

kuri gali būti pakeista į trumpą kodo versiją ...

 Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.stackoverflow.com")); startActivity(intent); 

arba:

border=0
 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com")); startActivity(intent); 

trumpiausias!

 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com"))); 

laimingas kodavimas!

60
27 мая '14 в 17:20 2014-05-27 17:20 atsakymą pateikė Jorgesys gegužės 27 d. 14 d. 17:20 2014-05-27 17:20

2.3. Pasisekė

 final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)); activity.startActivity(intent); 

Skirtumas yra naudojant Intent.ACTION_VIEW vietoj eilutės "android.intent.action.VIEW"

47
16 марта '11 в 18:35 2011-03-16 18:35 atsakymas pateikiamas MikeNereson kovo 16 d. 11 val. 18:35 2011-03-16 18:35

Paprastas atsakymas

Oficialų mėginį galite pamatyti iš „Android“ kūrėjo .

  public void openWebPage(String url) { Uri webpage = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, webpage); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } } 

Kaip tai veikia

Atkreipkite dėmesį į Intent konstruktorių:

 public Intent (String action, Uri uri) 

Antrą parametrą galite perduoti „ android.net.Uri “ egzemplioriui, o naujasis intentas bus sukurtas pagal pateiktą duomenų URL.

Ir tada tiesiog skambinkite startActivity(Intent intent) pradėti naują veiksmą, susijusį su ketinimu su nurodytu URL.

Ar jums reikalingas patikrinimo if ?

Taip dokumentai sako:

Jei prietaise nėra programų, kurios gali turėti netiesioginį ketinimą, jūsų programa bus nesėkminga, kai vadinama startActivity () funkcija. Norėdami iš pradžių patikrinti, ar egzistuoja programa, norinti gauti ketinimą, skambinkite „Intensyvumo“ () funkcijai jūsų tikslo objektui. Jei rezultatas nėra lygus nuliui, yra bent viena programa, kuri gali tvarkyti ketinimą, ir saugu skambinti startActivity (). Jei rezultatas yra lygus nuliui, neturėtumėte naudoti ketinimų ir, jei įmanoma, išjungti funkciją, kuri sukelia ketinimą.

Premija

Vienoje eilutėje galite rašyti, kai kuriate intentą, kaip parodyta žemiau:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
36
24 авг. atsakymas pateikiamas phi 24 rug. 2015-08-24 08:06 '15, 08:06 2015-08-24 08:06

Išbandykite:

 Uri uri = Uri.parse("https://www.google.com"); startActivity(new Intent(Intent.ACTION_VIEW, uri)); 

arba jei norite, kad jūsų naršyklė būtų atidaryta jūsų veikloje, atlikite šiuos veiksmus:

 WebView webView = (WebView) findViewById(R.id.webView1); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); webView.loadUrl(URL); 

ir jei norite naršyklėje naudoti mastelio keitimo valdiklius, galite naudoti:

 settings.setSupportZoom(true); settings.setBuiltInZoomControls(true); 
24
31 авг. atsakymą pateikė „ Nikki“ 31 d. 2012-08-31 13:10 '12, 13:10 pm 2012-08-31 13:10

Jei norite parodyti vartotojui dialogą su visais naršyklių sąrašais, jis gali pasirinkti pageidaujamą, čia yra kodo pavyzdys:

 private static final String HTTPS = "https://"; private static final String HTTP = "http://"; public static void openBrowser(final Context context, String url) { if (!url.startsWith(HTTP)  !url.startsWith(HTTPS)) { url = HTTP + url; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(Intent.createChooser(intent, "Choose browser"));// Choose browser is arbitrary :) } 
20
09 янв. atsakymą pateikė Dmytro Danylyk 09 jan. 2013-01-09 11:55 '13, 11:55, 2013-01-09 11:55

Kaip ir kiti (gerai veikiantys) sprendimai, norėčiau atsakyti į tą patį, bet su užuomina, kurią, mano nuomone, dauguma norėtų naudoti.

Jei norite, kad programa, kurią pradėjote atidaryti naujoje užduotyje, nepriklausomai nuo jūsų, vietoj to paties steko, galite naudoti šį kodą:

 final Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK); startActivity(intent); 
15
08 апр. atsakymas pateikiamas „ Android“ kūrėjui 2010 m. 2014-04-08 12:19 '14, 12:19, 2014-04-08 12:19

kitas parsisiuntimo URL parametras tame pačiame prietaise naudojant „Webview“

 webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); 
14
25 июня '12 в 11:01 2012-06-25 11:01 atsakymas pateikiamas Sanket birželio 25 d. 12 val. 11:01 2012-06-25 11:01

Taip pat galite eiti tokiu būdu.

Xml:

 <?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webView1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

„Java“ kode:

 public class WebViewActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); } } 

„Manifest“ nepamirškite pridėti leidimo prie interneto ...

10
19 дек. Atsakymą pateikė Aristo Michael 19 dec. 2013-12-19 09:04 '13, 09:04 2013-12-19 09:04

„Webview“ galima naudoti norint įkelti URL į jūsų programą. URL gali pateikti naudotojas tekstine forma, arba galite ją užrašyti.

Taip pat nepamirškite leidimo prisijungti prie „AndroidManifest“ interneto.

 String url="http://developer.android.com/index.html" WebView wv=(WebView)findViewById(R.id.webView); wv.setWebViewClient(new MyBrowser()); wv.getSettings().setLoadsImagesAutomatically(true); wv.getSettings().setJavaScriptEnabled(true); wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); wv.loadUrl(url); private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 
6
13 нояб. Atsakymą pateikė Gorav Sharma 13 lapkritis. 2015-11-13 00:41 '15 - 0:41 2015-11-13 00:41

Bandomojo bloko viduje įklijuokite šį kodą, „Android Intent“ tiesiogiai naudoja nuorodą „Uniform Resource Identifier“ (URI), kad nustatytų jūsų nuorodos vietą.

Galite pabandyti:

 Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(myIntent); 
5
09 янв. Atsakymas pateikiamas Kanwar_Singh 09 jan. 2014-01-09 15:37 '14, 15:37 2014-01-09 15:37

Trumpas kodo variantas ...

  if (!strUrl.startsWith("http://")  !strUrl.startsWith("https://")){ strUrl= "http://" + strUrl; } startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl))); 
5
03 дек. Atsakymas duotas Jorgesys 03 dec. 2013-12-03 19:24 '13, 19:24, 2013-12-03 19:24

„Chrome“ pritaikyti skirtukai dabar yra:

Pirmajame etape pridėtinių skirtukų palaikymo biblioteka pridedama prie „build.gradle“ failo:

 dependencies { ... compile 'com.android.support:customtabs:24.2.0' } 

Tada atidarykite chromuotą skirtuką:

 String url = "https://www.google.pt/"; CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); CustomTabsIntent customTabsIntent = builder.build(); customTabsIntent.launchUrl(this, Uri.parse(url)); 

Daugiau informacijos: https://developer.chrome.com/multidevice/android/customtabs

4
19 авг. atsakymas duotas francisco_ssb 19 rug. 2016-08-19 16:01 '16, 16:01 pm 2016-08-19 16:01
 Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink)); startActivity(getWebPage); 
3
17 июля '14 в 15:40 2014-07-17 15:40 Atsakymą pateikė TheOddAbhi liepos 17 d. 14, 15:40 2014-07-17 15:40
 String url = "http://www.example.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 
3
04 сент. atsakymą pateikė Pradeep Sodhi 04 sep . 2014-09-04 10:19 '14, 10:19 2014-09-04 10:19

Paprasta, naršant svetainę su ketinimu,

 Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.yoursite.in")); startActivity(viewIntent); 

Naudokite šį paprastą kodą, kad peržiūrėtumėte savo svetainę „Android“ programoje.

Pridėti prieigą prie „manifest“ failo,

 <uses-permission android:name="android.permission.INTERNET" /> 
2
08 нояб. Atsakymas suteiktas stacktry 08 lapkritis 2014-11-08 12:34 '14, 12:34 2014-11-08 12:34

MarkB atsakymas teisingas. Mano atveju naudoju Xamarin ir kodą, skirtą naudoti su C # ir Xamarin:

 var uri = Android.Net.Uri.Parse ("http://www.xamarin.com"); var intent = new Intent (Intent.ActionView, uri); StartActivity (intent); 

Ši informacija yra paimta iš: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/

2
11 июля '17 в 16:02 2017-07-11 16:02 Juan Carlos Velez atsakymas liepos 17 d. 17 d. 16:02 2017-07-11 16:02

Manau, kad tai geriausias

 openBrowser(context, "http://www.google.com") 

Įdėkite kodą žemiau pasaulinėje klasėje

  public static void openBrowser(Context context, String url) { if (!url.startsWith("http://")  !url.startsWith("https://")) url = "http://" + url; Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(browserIntent); } 
1
05 окт. Atsakyti Karthik Sridharan Oct 05 2016-10-05 09:30 '16 at 9:30 2016-10-05 09:30

android.webkit.URLUtil turi guessUrl(String) metodą, kuris veikia puikiai (net su file:// arba data:// ), nes Api level 1 („Android 1.0“). Naudokite kaip:

 String url = URLUtil.guessUrl(link); // url.com -> http://url.com/ (adds http://) // http://url -> http://url.com/ (adds .com) // https://url -> https://url.com/ (adds .com) // url -> http://www.url.com/ (adds http://www. and .com) // http://www.url.com -> http://www.url.com/ // https://url.com -> https://url.com/ // file://dir/to/file -> file://dir/to/file // data://dataline -> data://dataline // content://test -> content://test 

Veiklos kvietime:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URLUtil.guessUrl(download_link))); if (intent.resolveActivity(getPackageManager()) != null) startActivity(intent); 

Perskaitykite guessUrl kodą, kad sužinotumėte daugiau.

1
21 июня '17 в 13:57 2017-06-21 13:57 atsakymą įteikė IG Pascual , birželio 21 d. 17, 13:57 2017-06-21 13:57

Patikrinkite, ar teisingas URL. Man buvo nepageidaujama erdvė prieš URL.

1
12 окт. Sonia John Kavery atsakymas spalio 12 d. 2015-10-12 13:46 '15, 13:46, 2015-10-12 13:46

// OnClick klausytojas

  @Override public void onClick(View v) { String webUrl = news.getNewsURL(); if(webUrl!="") Utils.intentWebURL(mContext, webUrl); } 

// Jūsų naudojimo metodas

 public static void intentWebURL(Context context, String url) { if (!url.startsWith("http://")  !url.startsWith("https://")) { url = "http://" + url; } boolean flag = isURL(url); if (flag) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(browserIntent); } } 
1
22 янв. atsakymas, kurį pateikė Faakhir 22 sausis 2018-01-22 12:17 '18, 12:17 val. 2018-01-22 12:17

Šiuo metodu naudojamas metodas, leidžiantis įvesti bet kurią eilutę vietoj fiksuoto įvesties. Tai išsaugo keletą kodų eilučių, jei ji naudojama kelis kartus, nes jums reikia tik trijų eilučių, kad paskambintumėte metodas.

 public Intent getWebIntent(String url) { //Make sure it is a valid URL before parsing the URL. if(!url.contains("http://")  !url.contains("https://")){ //If it isn't, just add the HTTP protocol at the start of the URL. url = "http://" + url; } //create the intent Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); if (intent.resolveActivity(getPackageManager()) != null) { //Make sure there is an app to handle this intent return intent; } //If there is no app, return null. return null; } 

Naudojant šį metodą, jis tampa universalus. IT neprivalo būti įtrauktas į konkretų veiksmą, nes galite jį naudoti taip:

 Intent i = getWebIntent("google.com"); if(i != null) startActivity(); 

Arba, jei norite paleisti ją už veiksmo ribų, tiesiog užvedkite startActivity veiksmo atveju:

 Intent i = getWebIntent("google.com"); if(i != null) activityInstance.startActivity(i); 

Kaip matyti iš abiejų šių kodų blokų, yra nulinis patikrinimas. Taip jis grąžina nulį, jei nėra prašymo tvarkyti ketinimus.

Šis numatytasis metodas naudojamas HTTP, jei nėra konkretaus protokolo, nes yra svetainių, kuriose nėra SSL sertifikato (kurio reikia HTTPS ryšiui), ir jie nustos veikti, jei bandysite naudoti HTTPS Ten Bet kuri svetainė vis tiek gali nustatyti HTTPS, taigi šios šalys vis tiek iškraus HTTPS.


Kadangi šis metodas naudoja išorinius išteklius, kad būtų rodomas puslapis, nereikia deklaruoti „INternet“ leidimo. Tai turėtų padaryti programa, rodanti tinklalapį.

0
01 мая '17 в 21:47 2017-05-01 21:47 atsakymas duotas Zoe 01 Gegužės 17 d. 21:47 2017-05-01 21:47

Na, aš patikrinau kiekvieną atsakymą, bet kokia programa turi glaudų ryšį su tuo pačiu URL, kurį vartotojas nori naudoti?

Šiandien aš gavau šį atvejį ir atsakymą browserIntent.setPackage("browser_package_name");

pavyzdžiui:

  Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); browserIntent.setPackage("com.android.chrome"); // Whatever browser you are using startActivity(browserIntent); 

Ačiū!

0
10 янв. Atsakymą pateikė Vaibhav Kadam 2018-01-10 06:03 '18, 6:03, 2018-01-10 06:03

Remiantis „Mark B“ atsakymu ir toliau pateiktais komentarais:

 protected void launchUrl(String url) { Uri uri = Uri.parse(url); if (uri.getScheme() == null || uri.getScheme().isEmpty()) { uri = Uri.parse("http://" + url); } Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri); if (browserIntent.resolveActivity(getPackageManager()) != null) { startActivity(browserIntent); } } 
0
16 дек. atsakymas pateikiamas divonas 16 dec. 2016-12-16 09:35 '16 at 9:35 am 2016-12-16 09:35

Išbandykite jį. Dirbk man!

  public void webLaunch(View view) { WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVisibility(View.VISIBLE); View view1=findViewById(R.id.recharge); view1.setVisibility(View.GONE); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.loadUrl("<your link>"); } 

xml kodas: -

  <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

--------- ARBA ------------------

 String url = ""; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 
0
30 марта '17 в 14:35 2017-03-30 14:35 atsakymą pateikė Debasish Ghosh, kovo 30 d. 17, 14:35 2017-03-30 14:35

Išbandykite šį „ OmegaIntentBuilder“

 OmegaIntentBuilder.from(context) .web("Your url here") .createIntentHandler() .failToast("You don't have app for open urls") .startActivity(); 
0
23 янв. atsakymą pateikė T. Roman 2018-01-23 17:07 '18, 17:07 val. 2018-01-23 17:07

Pagrindinis įvadas:

https: // naudoja šį kodą „kode“, kad nė vienas iš jų jų neperskaitytų. Jis apsaugo jūsų informaciją nuo įsilaužėlių.

http: // naudoja tik bendrinimą, jis nėra apsaugotas.

Apie jūsų problemą:
XML dizainas:

 <?xml version="1.0" encoding="utf-8"?> <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="com.example.sridhar.sharedpreferencesstackoverflow.MainActivity"> <LinearLayout android:orientation="horizontal" android:background="#228b22" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"> <Button android:id="@+id/normal_search" android:text="secure Search" android:onClick="secure" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/secure_search" android:text="Normal Search" android:onClick="normal" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_weight="9" android:id="@+id/button_container" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal"> <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </LinearLayout> 

Dizaino veikla:

 public class MainActivity extends Activity { //securely open the browser public String Url_secure="https://www.stackoverflow.com"; //normal purpouse public String Url_normal="https://www.stackoverflow.com"; WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView=(WebView)findViewById(R.id.webView1); } public void secure(View view){ webView.setWebViewClient(new SecureSearch()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(Url_secure); } public void normal(View view){ webView.setWebViewClient(new NormalSearch()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(Url_normal); } public class SecureSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String Url_secure) { view.loadUrl(Url_secure); return true; } } public class NormalSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String Url_normal) { view.loadUrl(Url_normal); return true; } } } 

Leidimai „Android Manifest.Xml“ :

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

Su šia problema susiduriate:

  1. gauti leidimų
  2. perteklinė erdvė tarp URL
  3. Patikrinkite, ar teisingas URL
0
29 июля '16 в 5:07 2016-07-29 05:07 atsakymas pateikiamas balu 29 d., 16 d., 5:07 2016-07-29 05:07

Jei norite tai padaryti naudojant XML, o ne programiniu būdu, galite naudoti „TextView“:

 android:autoLink="web" android:linksClickable="true" 
-1
19 янв. atsakymą Salam El-Banna pateikė sausio 19 d. 2017-01-19 10:58 '17 at 10:58 2017-01-19 10:58