내 응용 프로그램에서 Android 웹 브라우저의 URL을 어떻게 열 수 있습니까?


1344

내 응용 프로그램이 아닌 내장 웹 브라우저의 코드에서 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


1
일부 장치에서 왜 작동하지 않습니까? 웹 브라우저가 있더라도 ActivityNotFoundException으로 이동합니다.

@Manu와 같은 문제가 있습니다. Nexus 6의 기본 설치에는 크롬이 있지만 링크는 예외를 발생시킵니다.
Brill Pappin

답변:


2456

이 시도:

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을 입력하고있는 EditText를 미리 채울 것입니다.


2
귀하의 코드와 mbaird가 동일하지 않다는 것을 제외하고는 게시 된 내용을 알 수 있습니다. URL에 http://체계 가 있는지 확인하십시오 . 예외는 URL에 체계가 없음을 나타냅니다.
CommonsWare

5
예 ! http : //를 놓쳤다! 사용자가 URL을 입력했습니다. 자동 서식을 지정할 수 있습니까?
Arutha

4
URLUtil은 사용자가 입력 한 "url"문자열을 확인하는 좋은 방법입니다.
Dan

90
if (!url.startsWith("http://") && !url.startsWith("https://"))file : // 과 같은 URL로 연결 하고 좋은 유스 케이스를 깨뜨릴 수있는 일반적인 오류입니다 . URI 클래스로 URI를 구문 분석하고 스키마가 있는지 확인하십시오. 아니라면 "http : //";)를 추가하십시오
tuxSlayer

22
로 null 점검이 필요합니다 resolveCheck. 공식 문서를 참조하십시오 . 주의 : 장치에 암시 적 의도를 수신 할 수있는 앱이 없으면 startActivity ()를 호출 할 때 앱이 중단됩니다. 앱이 의도를 수신 할 수 있는지 먼저 확인하려면 Intent 오브젝트에서 resolveActivity ()를 호출하십시오.
kenju

90

이를 달성하는 일반적인 방법은 다음 코드를 사용하는 것입니다.

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

행복한 코딩!


57

간단한 답변

Android Developer의 공식 샘플을 볼 수 있습니다 .

/**
 * 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.Uri인스턴스를 2 번째 매개 변수에 전달 하면 지정된 데이터 URL을 기반으로 새 의도가 작성됩니다.

그런 다음 전화 startActivity(Intent intent)를 걸어 지정된 URL과 함께 Intent에 번들로 제공되는 새 활동을 시작하십시오.

if수표 명세서 가 필요 합니까?

예. 문서는 말합니다 :

장치에 암시 적 의도를 수신 할 수있는 앱이없는 경우 startActivity ()를 호출하면 앱이 중단됩니다. 앱이 의도를 수신 할 수 있는지 먼저 확인하려면 Intent 오브젝트에서 resolveActivity ()를 호출하십시오. 결과가 널이 아닌 경우 의도를 처리 할 수있는 하나 이상의 앱이 있으며 startActivity ()를 호출하는 것이 안전합니다. 결과가 널이면 의도를 사용하지 말고 가능하면 의도를 호출하는 기능을 사용 안함으로 설정해야합니다.

보너스

아래와 같이 Intent 인스턴스를 만들 때 한 줄에 쓸 수 있습니다.

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

3
이것은 제공된 URL에 http 가 있다고 가정 합니다.
IgorGanapolsky

56

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으로 인해 문제가 해결되었습니다. 구현의 차이점이 무엇인지 아는 사람이 있습니까?
Innova

2
안드로이드 개발자에 따르면 :이 답변- "주어진 행동으로 의도를 만드십시오. 다른 모든 필드 (데이터, 유형, 클래스)는 null입니다." 승인 된 답변- "특정 조치 및 주어진 데이터 URL에 대한 의도 작성"
Teo Inke

30

이 시도:

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
의도를 처리 할 수있는 여러 앱이있는 경우 시스템에서 자동으로 선택기를 제공합니다.
Jeffrey Blattman

URL은 httpor로 ether를 시작할 수 있기 때문에 @ xmen-wk https이며, Java에서는 '매직 문자열'을 상수로 선언하는 것이 좋습니다.
Dmytro Danylyk 2014

thx에 대해 몰랐습니다 context.startActivity. 외부 클래스에서 호출 할 때 매우 유용
WuerfelDev

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

Chrome 맞춤 탭 에서 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)
}

웹 브라우저에 문제가있는 경우 새 작업을 수행하면 소스 앱이 버그 및 충돌로부터 보호됩니까?
Original Android

@TheOriginalAndroid 충돌 및 웹 브라우저와 관련이 무엇인지 이해하지 못합니다. 무엇을하려고하는지 설명하십시오.
안드로이드 개발자

답변 주셔서 감사합니다. 귀하의 게시물이 흥미 롭습니다. 특히 웹 시작을 위해 새 작업을 열면 어떤 이점이 있습니까?
The Original Android

2
@TheOriginalAndroid 사용자가 앱으로 다시 전환 한 다음 웹 브라우저로 다시 전환 할 수 있도록합니다. 최근 작업 화면을 열면 여기에 두 개의 작업이 표시됩니다. 또한 단일 작업 (앱 작업에 속하는)에서 웹 브라우저 축소판을 보는 대신 2 : 앱 중 하나와 웹 브라우저 중 하나가 표시됩니다. 나는 이것이 그렇게 혼란스럽지 않다고 생각합니다.
안드로이드 개발자

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET더 이상 사용되지 않습니다
Pratik Butani

17

Webview를 사용하여 동일한 응용 프로그램에서 URL을로드하는 다른 옵션

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

 }

}

매니페스트에서 인터넷 허가를 추가하는 것을 잊지 마십시오 ...


이것은 흥미롭고 다릅니다. 이 방법으로 사용자가 내 앱에서 웹 브라우저를 볼 수 있습니다. 맞습니까? 나는 공감한다.
Original Android

9

Webview를 사용하여 응용 프로그램에서 URL을로드 할 수 있습니다. 텍스트보기에서 사용자로부터 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;
    }
}


6

짧은 코드 버전 ...

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


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

6

try 블록 내에서 다음 코드를 붙여 넣습니다 .Android Intent는 링크 위치를 식별하기 위해 URI (Uniform Resource Identifier) ​​괄호 내의 링크를 직접 사용합니다.

당신은 이것을 시도 할 수 있습니다 :

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*/
    }

사용 context!!.packageManager하는 대신 getPackageManager()A의 Fragment.
CoolMind

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

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

환영합니다, 초보자 원래 코드에 존재하지 않는 변수를 선언하여 답변을보다 완벽하게 작성하십시오.
tony gil


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

Mark B의 답변과 다음 코멘트에 기반합니다.

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(Android 1.0) 이후 ( 또는로도 ) guessUrl(String)완벽하게 작동 하는 메소드가 있습니다. 로 사용:file://data://Api level 1

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을 여는 방법을 설명하고 브라우저를 선택하는 시스템에 의존하지 않습니다.
Mr-IDE

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로 인해 해당 오류가 발생했습니다. Android OS에서 데이터에 대한 작업보기를 찾을 수 없습니다. 따라서 URL이 유효한지 확인했습니다.


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

이 방법은 메서드를 사용하여 고정 입력 대신 문자열을 입력 할 수 있도록합니다. 메소드를 호출하는 데 3 줄만 있으면되므로 반복해서 사용하면 일부 코드 줄이 절약됩니다.

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

이 방법을 사용하면 보편적으로 사용할 수 있습니다. 다음과 같이 사용할 수 있으므로 IT를 특정 활동에 배치 할 필요는 없습니다.

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

또는 액티비티 외부에서 시작하려면 액티비티 인스턴스에서 startActivity를 호출하면됩니다.

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

이 두 코드 블록에서 볼 수 있듯이 null 검사가 있습니다. 인 텐트를 처리 할 앱이없는 경우 null을 반환하기 때문입니다.

SSL 인증서가없는 웹 사이트 (HTTPS 연결에 필요한 것)가 있고 HTTPS를 사용하려고 시도하는 웹 사이트가 없기 때문에 프로토콜이 정의되어 있지 않으면이 방법의 기본값은 HTTP입니다. . 모든 웹 사이트는 여전히 HTTPS로 강제 전환 될 수 있으므로 이러한 측면은 HTTPS로 연결됩니다.


이 메소드는 외부 자원을 사용하여 페이지를 표시하므로 INternet 권한을 선언 할 필요가 없습니다. 웹 페이지를 표시하는 앱이이를 수행해야합니다.


1

// OnClick 리스너

  @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

브라우저에서 URL을 열려면 간단히 짧은 것을 사용하십시오.

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이 작업을 더 쉽게하기 위해 확장 기능을 추가했습니다

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

보너스로 여기에 문자열을 안전하게 Uri로 변환하는 간단한 확장 함수가 있습니다.

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

1

그래서 다른 모든 답변은 해당 링크에 대한 기본 앱을 열었지만 기본 브라우저 는 아니기 때문에 이것을 오랫동안 찾았 습니다.

나는 마침내 그렇게했다 :

// 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정적 유틸리티 유틸리티에 이것을 사용했기 때문에 .WHAT 를 알 수 있습니다 . 활동 에서이 작업을 수행하는 경우 필요하지 않습니다.



0

이것을보십시오. 나를 위해 일했습니다!

    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 코드 :-

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

--------- 또는 ------------------

String url = "";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

대부분의 앱에서 WebView를 추가하는 것은 어려운 일입니다. 브라우저에서 URL을 여는 것이 더 쉽습니다.
Zoe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.