මගේ යෙදුමෙන් ඇන්ඩ්‍රොයිඩ් වෙබ් බ්‍රව්සරයේ URL එකක් විවෘත කරන්නේ කෙසේද?


1366

මගේ යෙදුම තුළ නොව, සාදන ලද වෙබ් බ්‍රව්සරයේ කේතයෙන් URL එකක් විවෘත කරන්නේ කෙසේද?

මම මෙය උත්සාහ කළෙමි:

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();
}

නමුත් මට ව්‍යතිරේකයක් තිබේ:

No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com

6
මම හිතන්නේ එයට හේතුව මෙයයි: android-developers.blogspot.com/2009/12/…
අරුත

1
සමහර උපාංගවල මෙය ක්‍රියා නොකරන්නේ ඇයි? වෙබ් බ්‍රව්සරයක් තිබුණත් එය ActivityNotFoundException වෙත යයි.

An මනු හා සමාන ප්‍රශ්නය මම දකිමි. නෙක්සස් 6 හි මූලික ස්ථාපනය, ක්‍රෝම් ඇත, නමුත් ව්‍යතිරේකයක් ඇති කරන සබැඳි.
බ්‍රිල් පැපින්

Answers:


2484

මේක උත්සාහ කරන්න:

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

ඒක මට හොඳට වැඩ කරනවා.

අතුරුදහන් වූවන් සඳහා "http: //" මම මේ වගේ දෙයක් කරන්නම්:

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

පරිශීලකයා "http: //" සමඟ URL යක් ටයිප් කරන බව මම ඔබේ සංස්කරණ ටෙක්ස්ට් පූර්ව ජනගහනය කරමි.


2
ඔබගේ කේතය සහ mbaird එක සමාන නොවන බව හැර, පළ කර ඇති දේ සඳහා මට පැවසිය හැකි දෙයින්. ඔබගේ URL එකට http://යෝජනා ක්‍රමය ඇති බවට සහතික වන්න - පෙන්වා ඇති ව්‍යතිරේකය මඟින් ඔබගේ URL හි යෝජනා ක්‍රමය නොමැති බව අඟවයි.
කොමන්ස්වෙයාර්

5
ඔව් ! එයට http: // මඟ හැරුණි! URL ය පරිශීලකයා විසින් ඇතුළත් කර ඇත, ස්වයංක්‍රීයව ආකෘතිකරණය කිරීමට ක්‍රමයක් තිබේද?
අරුත

4
URLUtil යනු පරිශීලකයා ඇතුළු කළ "url" නූල් පරීක්ෂා කිරීමට හොඳ ක්‍රමයකි
ඩෑන්

91
if (!url.startsWith("http://") && !url.startsWith("https://"))ගොනුව: // වැනි යූආර්එල් වෙත ඔබව ගෙන යා හැකි පොදු දෝෂයක් වන අතර හොඳ භාවිත අවස්ථා කිහිපයක් බිඳ දැමිය හැකිය. යූරි පංතිය සමඟ යූරි විග්‍රහ කිරීමට උත්සාහ කරන්න. නොමැති නම්, "http: //";) එකතු කරන්න
tuxSlayer

22
ඔබට ශුන්‍ය පරීක්‍ෂණයක් අවශ්‍ය resolveCheckවේ. බලන්න offical ලේඛන : අවවාදයයි: ගම්ය අරමුණ ලබා ගත හැක බව උපාංගය මත කිසිදු යෙදුම් තිබේ නම්, එය startActivity (ඇමතුම් විට ඔබේ යෙදුම වනවා). අභිප්‍රාය ලබා ගැනීම සඳහා යෙදුමක් පවතින බව පළමුව තහවුරු කර ගැනීම සඳහා, ඔබේ අභිප්‍රාය වස්තුවෙහි resolveActivity () අමතන්න.
කෙන්ජු

95

මෙය සාක්ෂාත් කර ගැනීම සඳහා පොදු ක්‍රමයක් වන්නේ ඊළඟ කේතය සමඟ ය:

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

එය කෙටි කේත අනුවාදයකට වෙනස් කළ හැකිය ...

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

හෝ :

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

කෙටිම! :

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

සතුටු කේතීකරණය!


60

සරල පිළිතුර

Android සංවර්ධක වෙතින් නිල නියැදිය ඔබට දැක ගත හැකිය .

/**
 * Open a web page of a specified URL
 *
 * @param url URL to open
 */
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);
    }
}

එය ක්‍රියාත්මක වන ආකාරය

කරුණාකර මෙහි ඉදිකිරීම්කරු දෙස බලන්න Intent:

public Intent (String action, Uri uri)

ඔබට android.net.Uri2 වන පරාමිතිය වෙත උදාහරණය යැවිය හැකි අතර, ලබා දී ඇති දත්ත url මත පදනම්ව නව අභිප්‍රායක් නිර්මාණය වේ.

ඉන්පසු, startActivity(Intent intent)නව ක්‍රියාකාරකමක් ආරම්භ කිරීමට අමතන්න , එය ලබා දී ඇති URL සමඟ අභිප්‍රාය සමඟ බැඳී ඇත.

මට ifචෙක් ප්‍රකාශය අවශ්‍යද?

ඔව්. මෙම ලේඛන පවසයි:

ව්‍යංග අභිප්‍රාය ලබා ගත හැකි යෙදුම් උපාංගයේ නොමැති නම්, ආරම්භක ක්‍රියාකාරිත්වය () අමතන විට ඔබගේ යෙදුම බිඳ වැටෙනු ඇත. අභිප්‍රාය ලබා ගැනීම සඳහා යෙදුමක් පවතින බව පළමුව තහවුරු කර ගැනීම සඳහා, ඔබේ අභිප්‍රාය වස්තුවෙහි resolveActivity () අමතන්න. ප්‍රති result ලය ශුන්‍ය නොවේ නම්, අභිප්‍රාය හැසිරවිය හැකි අවම වශයෙන් එක් යෙදුමක්වත් ඇති අතර ආරම්භක ක්‍රියාකාරීත්වය () ඇමතීම ආරක්ෂිතයි. ප්‍රති result ලය ශුන්‍ය නම්, ඔබ අභිප්‍රාය භාවිතා නොකළ යුතු අතර, හැකි නම්, ඔබ අභිප්‍රාය ඉල්ලා සිටින අංගය අක්‍රිය කළ යුතුය.

පාරිතෝෂිකය

පහත දැක්වෙන පරිදි අභිප්‍රාය නිර්මාණය කිරීමේදී ඔබට එක් පේළියකින් ලිවිය හැකිය:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

3
මෙයින් උපකල්පනය කරන්නේ සැපයූ url එකෙහි http ඇති බවයි.
ඉගෝර්ගනාපොල්ස්කි

59

2.3 දී, මට වඩා හොඳ වාසනාවක් තිබුණි

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

වෙනස වන්නේ Intent.ACTION_VIEWනූල් වෙනුවට භාවිතා කිරීමයි"android.intent.action.VIEW"


1
වෙනස්ද?
user1324936

1
මෙම පිළිතුර මට ඉමහත් උපකාරයක් විය. වෙනස කුමක්දැයි මම නොදනිමි, නමුත් අපට 2.3 සමඟ ගැටළුවක් ඇතිවිය. ක්‍රියාත්මක කිරීමේ වෙනස කුමක්දැයි කිසිවෙකු දන්නවාද?
ඉනෝවා

2
ඇන්ඩ්‍රොයිඩ් සංවර්ධකයාට අනුව: මෙම පිළිතුර - "දී ඇති ක්‍රියාවකින් අභිප්‍රායයක් සාදන්න. අනෙක් සියලුම ක්ෂේත්‍ර (දත්ත, වර්ගය, පන්තිය) අහෝසි වේ." සහ පිළිගත් පිළිතුර - "දී ඇති ක්‍රියාවකින් සහ ලබා දී ඇති දත්ත url සඳහා අභිප්‍රායක් සාදන්න."
Teo Inke

31

මේක උත්සාහ කරන්න:

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

හෝ ඔබට අවශ්‍ය නම් ඔබේ ක්‍රියාකාරකම තුළ වෙබ් බ්‍රව්සරය විවෘත වේ නම් මේ ආකාරයට කරන්න:

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

ඔබේ බ්‍රව්සරයේ විශාලන පාලනය භාවිතා කිරීමට අවශ්‍ය නම් ඔබට මෙය භාවිතා කළ හැකිය:

settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);

4
WebView හි ප්ලගීන සහ ඒවා අක්‍රීය කර ඇති බවත්, අන්තර්ජාල අවසරයන් අවශ්‍ය බවත් සලකන්න. ( යොමුව )

22

ඔබට සියලු බ්‍රව්සර් ලැයිස්තුව සමඟ සංවාදයක් පෙන්වීමට අවශ්‍ය නම් ඔහුට වඩාත් කැමති දේ තෝරා ගත හැකිය, මෙන්න නියැදි කේතය:

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 :)

}

5
අභිප්‍රාය හැසිරවිය හැකි යෙදුම් කිහිපයක් තිබේ නම්, පද්ධතිය ස්වයංක්‍රීයව තේරීමක් සපයනු ඇත, නේද?
ජෙෆ්රි බ්ලැට්මන්

@ xmen-wk යූආර්එල් මගින් ඊතර් සමඟ ආරම්භ කළ හැකි නිසා httpහෝ httpsජාවා වලදී 'මැජික් නූල්' නියත ලෙස ප්‍රකාශ කිරීම හොඳ පුරුද්දකි.
ඩිමිට්‍රෝ ඩැනිලික්

thx, ගැන දැනගෙන හිටියේ නැහැ context.startActivity. බාහිර පන්තියකින් එය
ඇමතීමේදී

18

අනෙක් අය ලියා ඇති විසඳුම් සේම (එය හොඳින් ක්‍රියාත්මක වේ), මම එකම දෙයට පිළිතුරු දීමට කැමතියි, නමුත් බොහෝ දෙනා භාවිතා කිරීමට කැමැත්තක් දක්වනු ඇතැයි මම සිතමි.

ඔබ නව කාර්යයක් තුළ විවෘත කිරීමට පටන් ගන්නා යෙදුම ඔබ කැමති නම්, ඔබේම දෑතින්ම, එකම තොගයේ රැඳී සිටීම වෙනුවට, ඔබට මෙම කේතය භාවිතා කළ හැකිය:

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.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

ක්‍රෝම් අභිරුචි ටැබ් වල URL විවෘත කිරීමට ක්‍රමයක් ද ඇත . කොට්ලින්හි උදාහරණය:

@JvmStatic
fun openWebsite(activity: Activity, websiteUrl: String, useWebBrowserAppAsFallbackIfPossible: Boolean) {
    var websiteUrl = websiteUrl
    if (TextUtils.isEmpty(websiteUrl))
        return
    if (websiteUrl.startsWith("www"))
        websiteUrl = "http://$websiteUrl"
    else if (!websiteUrl.startsWith("http"))
        websiteUrl = "http://www.$websiteUrl"
    val finalWebsiteUrl = websiteUrl
    //https://github.com/GoogleChrome/custom-tabs-client
    val webviewFallback = object : CustomTabActivityHelper.CustomTabFallback {
        override fun openUri(activity: Activity, uri: Uri?) {
            var intent: Intent
            if (useWebBrowserAppAsFallbackIfPossible) {
                intent = Intent(Intent.ACTION_VIEW, Uri.parse(finalWebsiteUrl))
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
                        or Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
                if (!CollectionUtil.isEmpty(activity.packageManager.queryIntentActivities(intent, 0))) {
                    activity.startActivity(intent)
                    return
                }
            }
            // open our own Activity to show the URL
            intent = Intent(activity, WebViewActivity::class.java)
            WebViewActivity.prepareIntent(intent, finalWebsiteUrl)
            activity.startActivity(intent)
        }
    }
    val uri = Uri.parse(finalWebsiteUrl)
    val intentBuilder = CustomTabsIntent.Builder()
    val customTabsIntent = intentBuilder.build()
    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
            or Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
    CustomTabActivityHelper.openCustomTab(activity, customTabsIntent, uri, webviewFallback)
}

නව කාර්යයක් කිරීම වෙබ් බ්‍රව්සරයට ගැටලු ඇති වුවහොත් ප්‍රභව යෙදුම දෝෂ සහ බිඳවැටීම් වලින් ආරක්ෂා වේද?
මුල් ඇන්ඩ්‍රොයිඩ්

OTheOriginalAndroid බිඳ වැටීම් සහ වෙබ් බ්‍රව්සරය සමඟ ඇති සම්බන්ධය කුමක්දැයි මට තේරෙන්නේ නැත. කරුණාකර ඔබ කිරීමට උත්සාහ කරන්නේ කුමක්ද යන්න පැහැදිලි කරන්න.
ඇන්ඩ්‍රොයිඩ් සංවර්ධක

ඔබගේ ප්රතිචාරයට ස්තුතියි. ඔබගේ ලිපිය සිත්ගන්නා සුළුය. විශේෂයෙන් වෙබ් දියත් කිරීම සඳහා නව කාර්යයක් විවෘත කිරීමේ වාසිය කුමක්ද?
මුල් ඇන්ඩ්‍රොයිඩ්

2
OTheOriginalAndroid පරිශීලකයාට ඔබගේ යෙදුමට නැවත මාරුවීමට හැකි වන අතර පසුව නැවත වෙබ් බ්‍රව්සරයට යන්න. ඔබ මෑත කාලීන කාර්ය තිරය විවෘත කළහොත්, එක් කාර්යයක් වෙනුවට මෙහි කාර්යයන් 2 ක් ඔබට පෙනෙනු ඇත. එසේම, එක් කාර්යයක (ඔබගේ යෙදුමේ කාර්යයට අයත්) වෙබ් බ්‍රව්සරයේ සිඟිති රූපයක් දැකීම වෙනුවට, ඔබට 2: ඔබේ යෙදුමෙන් එකක් සහ තවත් වෙබ් බ්‍රව්සරයක් පෙනෙනු ඇත. මම හිතන්නේ එය මේ ආකාරයෙන් අවුල් සහගතයි.
ඇන්ඩ්‍රොයිඩ් සංවර්ධක

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESETඅතහැර දමා ඇත
ප්‍රතික් බුටානි

17

වෙනත් විකල්පයක් වෙබ්වීව් භාවිතයෙන් එකම යෙදුමක යූආර්එල් පූරණය කරන්න

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");

WebView හි ප්ලගීන සහ ඒවා අක්‍රීය කර ඇති බවත්, අන්තර්ජාල අවසරයන් අවශ්‍ය බවත් සලකන්න. ( යොමුව )

12

ඔබටත් මේ ආකාරයෙන් යා හැකිය

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" />

ජාවා කේතයෙන්:

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");

 }

}

මැනිෆෙස්ට් හි අන්තර්ජාල අවසරය එක් කිරීමට අමතක නොකරන්න ...


මෙය සිත්ගන්නාසුළු හා වෙනස් ය. මගේ යෙදුමේ පරිශීලකයා වෙබ් බ්‍රව්සරයක් දකින ආකාරයට මම අනුමාන කරමි. ඒක හරිද? මම ඉහළට.
මුල් ඇන්ඩ්‍රොයිඩ්

9

ඔබේ අයදුම්පතේ Url පැටවීම සඳහා වෙබ් දසුන භාවිතා කළ හැකිය. පා view දර්ශනයෙන් පරිශීලකයාගෙන් URL ලබා දිය හැකිය, නැතහොත් ඔබට එය තදින් කේත කළ හැකිය.

AndroidManifest හි අන්තර්ජාල අවසරයන්ද අමතක නොකරන්න.

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;
    }
}

1
මෙය මගේ වීඩියෝ ගැටළුව නිරාකරණය කර ඇත: github.com/CrandellWS/VideoEnabledWebView/blob/master/app/src/…
CrandellWS

6

කෙටි කේත අනුවාදයක් ...

 if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){
     strUrl= "http://" + strUrl;
 }


 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl)));

6

ඔබගේ උත්සාහක කොටස තුළ, පහත කේතය අලවන්න, ඔබේ සම්බන්ධකයේ පිහිටීම හඳුනා ගැනීම සඳහා ඇන්ඩ්‍රොයිඩ් ඉන්ටෙන්ට් යූආර්අයි (ඒකාකාර සම්පත් හඳුනාගැනීමේ) වරහන් තුළ ඇති සබැඳිය කෙලින්ම භාවිතා කරයි.

ඔබට මෙය උත්සාහ කළ හැකිය:

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

5

සරල හා හොඳම පුහුණුව

ක්රමය 1:

String intentUrl="www.google.com";
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(intentUrl));
    if(webIntent.resolveActivity(getPackageManager())!=null){
        startActivity(webIntent);    
    }else{
      /*show Error Toast 
              or 
        Open play store to download browser*/
            }

ක්රමය 2:

try{
    String intentUrl="www.google.com";
    Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(intentUrl));
        startActivity(webIntent);
    }catch (ActivityNotFoundException e){
                /*show Error Toast
                        or
                  Open play store to download browser*/
    }

A context!!.packageManagerවෙනුවට භාවිතා කරන්න . getPackageManager()Fragment
CoolMind


3
Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink));          
startActivity(getWebPage);

සාදරයෙන් පිළිගනිමු, නවක වදය. මුල් පිළිතුරේ නොමැති විචල්‍යයන් ප්‍රකාශ කරමින් කරුණාකර පිළිතුර වඩාත් සම්පූර්ණ කරන්න.
ටෝනි ගිල්

3

මාර්ක්බීගේ ප්‍රතිචාරය හරි. මගේ නඩුවේදී මම Xamarin භාවිතා කරන අතර C # සහ Xamarin සමඟ භාවිතා කළ යුතු කේතය:

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

මෙම තොරතුරු ලබාගෙන ඇත්තේ: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/


3

Chrome අභිරුචි ටැබ් දැන් ලබා ගත හැකිය:

පළමු පියවර වන්නේ ඔබේ build.gradle ගොනුවට අභිරුචි ටැබ් ආධාරක පුස්තකාලය එක් කිරීමයි:

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

ඉන්පසු, ක්‍රෝම් අභිරුචි පටිත්තක් විවෘත කිරීමට:

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

වැඩි විස්තර සඳහා: https://developer.chrome.com/multidevice/android/customtabs


2

මාර්ක් බීගේ පිළිතුර සහ අදහස් දැක්වීම් මත පදනම්ව:

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);
    }
}

2

android.webkit.URLUtilමෙම ක්රමය ඇති guessUrl(String)(පවා මනාව දඩ වැඩ file://හෝ data://සිට) Api level 1(Android 1.0). පහත පරිදි භාවිතා කරන්න:

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

ක්‍රියාකාරකම් ඇමතුම තුළ:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URLUtil.guessUrl(download_link)));

if (intent.resolveActivity(getPackageManager()) != null)
    startActivity(intent);

වැඩි විස්තර සඳහා සම්පූර්ණ guessUrlකේතය පරීක්ෂා කරන්න .


2

හරි, මම සෑම පිළිතුරක්ම පරික්ෂා කළ නමුත් පරිශීලකයා භාවිතා කිරීමට කැමති එකම URL සමඟ ගැඹුරින් සම්බන්ධ වන යෙදුම කුමක්ද?

අද මට මේ නඩුව ලැබුණා browserIntent.setPackage("browser_package_name");

උදා:

   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);

ඔබට ස්තුතියි!


හොඳ පිළිතුරක්. එය විශේෂිත බ්‍රව්සරයක (සෘජුවම) අභිප්‍රාය URL එකක් විවෘත කරන්නේ කෙසේද යන්න පැහැදිලි කරයි, සහ බ්‍රව්සරයක් තෝරා ගැනීමේ පද්ධතිය මත රඳා නොසිටින්න.
මිස්ටර්-අයිඩීඊ

2

අභිප්‍රාය හරහා සරල, වෙබ් අඩවි දර්ශනය,

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

android යෙදුමේ ඔබේ වෙබ් අඩවිය බැලීමට මෙම සරල කේතය භාවිතා කරන්න.

මැනිෆෙස්ට් ගොනුවේ අන්තර්ජාල අවසරය එක් කරන්න,

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

2
String url = "https://www.thandroid-mania.com/";
if (url.startsWith("https://") || url.startsWith("http://")) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
}else{
    Toast.makeText(mContext, "Invalid Url", Toast.LENGTH_SHORT).show();
}

වලංගු නොවන URL නිසා එම දෝෂය ඇතිවිය, ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතියට ඔබගේ දත්ත සඳහා ක්‍රියාකාරී දසුනක් සොයාගත නොහැක. එබැවින් URL ය වලංගුද නැද්ද යන්න ඔබ වලංගු කර ඇත.


2

ඒ නිසා මම දීර් time කාලයක් තිස්සේ මෙය සෙව්වේ අනෙක් සියලුම පිළිතුරු එම සබැඳිය සඳහා පෙරනිමි යෙදුම විවෘත කරන නමුත් පෙරනිමි බ්‍රව්සරයක් නොවන නිසා මට අවශ්‍ය වූයේ එයයි.

මම අවසානයේ එය කිරීමට සමත් විය:

// gathering the default browser
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
final ResolveInfo resolveInfo = context.getPackageManager()
    .resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String defaultBrowserPackageName = resolveInfo.activityInfo.packageName;


final Intent intent2 = new Intent(Intent.ACTION_VIEW);
intent2.setData(Uri.parse(url));

if (!defaultBrowserPackageName.equals("android") {
    // android = no default browser is set 
    // (android < 6 or fresh browser install or simply no default set)
    // if it's the case (not in this block), it will just use normal way.
    intent2.setPackage(defaultBrowserPackageName);
}

context.startActivity(intent2);

BTW, ඔබට දැකිය හැකිය context.නමුත්, මම මෙය ස්ථිතික උපයෝගීතා ක්‍රමයක් සඳහා භාවිතා කර ඇති නිසා, ඔබ මෙය ක්‍රියාකාරකමක කරන්නේ නම්, එය අවශ්‍ය නොවේ.


1

මම හිතන්නේ මේක තමයි හොඳම

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

පහත කේතය ගෝලීය පන්තියට දමන්න

    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

ස්ථාවර ආදානයක් වෙනුවට ඕනෑම සංගීත භාණ්ඩයක් ආදානය කිරීමට ඔබට ඉඩ දීම සඳහා මේ ආකාරයෙන් ක්‍රමයක් භාවිතා කරයි. නැවත නැවත වාර ගණනක් භාවිතා කරන්නේ නම් මෙය කේත පේළි කිහිපයක් ඉතිරි කරයි, මන්ද ඔබට ක්‍රමය ඇමතීමට අවශ්‍ය වන්නේ පේළි තුනක් පමණි.

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)/*And parse the valid URL. It doesn't need to be changed at this point, it we don't create an instance for it*/);
    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;
}

මෙම ක්‍රමය භාවිතා කිරීමෙන් එය විශ්වීය ලෙස භාවිතා කළ හැකිය. තොරතුරු තාක්‍ෂණය විශේෂිත ක්‍රියාකාරකමක තැබිය යුතු නැත, මන්ද ඔබට එය මේ ආකාරයෙන් භාවිතා කළ හැකිය:

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

නැතහොත් ඔබට එය ක්‍රියාකාරකමකින් පිටත ආරම්භ කිරීමට අවශ්‍ය නම්, ඔබ ක්‍රියාකාරකම් උදාහරණයේ ආරම්භක ක්‍රියාකාරිත්වය අමතන්න:

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

මෙම කේත කොටස් දෙකෙහිම දැකිය හැකි පරිදි ශුන්‍ය පරීක්‍ෂණයක් ඇත. මෙය අභිප්‍රාය හැසිරවීමට යෙදුමක් නොමැති නම් එය අහෝසි වේ.

එස්එස්එල් සහතිකයක් නොමැති වෙබ් අඩවි ඇති බැවින් (ඔබට HTTPS සම්බන්ධතාවයක් සඳහා අවශ්‍ය දේ) සහ ඔබ HTTPS භාවිතා කිරීමට උත්සාහ කළහොත් ඒවා ක්‍රියා විරහිත වන බැවින් මෙම ක්‍රමය HTTP වෙත පෙරනිමි. . ඕනෑම වෙබ් අඩවියකට තවමත් HTTPS වෙත බල කළ හැකි බැවින් එම පැති ඔබව HTTPS වෙත යොමු කරයි


පිටුව ප්‍රදර්ශනය කිරීම සඳහා මෙම ක්‍රමය බාහිර සම්පත් භාවිතා කරන හෙයින්, ඔබට ඉන්ටර්නෙට් අවසරය ප්‍රකාශ කිරීමේ අවශ්‍යතාවයක් නොමැත. වෙබ් පිටුව පෙන්වන යෙදුමට එය කළ යුතුය


1

// ඔන්ක්ලික් සවන්දෙන්නන්

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

// ඔබේ උපයෝගීතා ක්‍රමය

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);
        }

    }

"IsURL" යන්න අර්ථ දක්වන්නේ කොහේද?
Cabuxa.Mapache

1

බ්‍රවුසරයේ ඔබේ යූආර්එල් විවෘත කිරීමට කෙටි එකක් සමඟ යන්න:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("YourUrlHere"));
startActivity(browserIntent);


1

කෝට්ලින් පිළිතුර:

val browserIntent = Intent(Intent.ACTION_VIEW, uri)
ContextCompat.startActivity(context, browserIntent, null)

Uriමෙය වඩාත් පහසු කිරීම සඳහා මම දිගුවක් එක් කර ඇත

myUri.openInBrowser(context)

fun Uri?.openInBrowser(context: Context) {
    this ?: return // Do nothing if uri is null

    val browserIntent = Intent(Intent.ACTION_VIEW, this)
    ContextCompat.startActivity(context, browserIntent, null)
}

ප්‍රසාද දීමනාවක් ලෙස, නූලක් ආරක්ෂිතව යූරි බවට පරිවර්තනය කිරීම සඳහා සරල දිගු කිරීමේ කාර්යයක් මෙන්න.

"https://stackoverflow.com".asUri().openInBrowser(context)

fun String?.asUri(): Uri? {
    try {
        return Uri.parse(this)
    } catch (e: Exception) {}
    return null
}

එය සිත්ගන්නාසුලු කිසිවක් එකතු නොකරයි. URL එකක් හැසිරවීමේ යෙදුමක් නොමැති නම් පවා ක්‍රියා නොකරනු ඇත. ව්යතිරේකයක් සමඟ බිඳ වැටෙනු ඇත.
CoolMind

සියලුම උපාංගවලට URL එකක් හැසිරවීමට යෙදුමක් තිබිය යුතුය. ඔබට අවශ්‍ය පරිදි ඔබේ අසාර්ථකත්වය / ව්‍යතිරේක හැසිරවීම එකතු කළ හැකිය,
ගිබෝල්ට්

ඔබ සමඟ එකඟ වන්න.
CoolMind

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.