loadurl을 호출할 때 Android 웹 보기가 브라우저를 시작합니다.
다음을 생성했습니다.Activity
제목과 웹 뷰를 가지고 있는 것은LinearLayout
.에서onResume()
호출하는 방법webView.loadUrl(url)
문제는 활동이 먼저 화면의 나머지 부분이 비어 있는 제목을 표시한 다음 URL에 대한 페이지와 함께 장치 브라우저가 실행된다는 것입니다.제가 보고 싶은 것은 다음 페이지에 표시되는 것입니다.WebView
표제 아래에무엇이 문제일까요?
편집: 네, 검색을 좀 더 해보니 다음과 같습니다.
그것은 다음을 가리킵니다.WebView
자습서 여기 있습니다.
웹 클라이언트를 구현하고 설정하기만 하면 됩니다.
Maudicus와 Hit의 제안을 바탕으로 제 질문에 대답합니다.
여기에서 WebView 자습서를 확인하십시오.웹 클라이언트를 구현하고 loadUrl 전에 설정하기만 하면 됩니다.가장 간단한 방법은 다음과 같습니다.
myWebView.setWebViewClient(new WebViewClient());
웹 콘텐츠에 대한 고급 처리를 위해 ChromeClient를 고려합니다.
사용:
lWebView.setWebViewClient(new WebViewClient());
다음과 같이 사용:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dedline);
WebView myWebView = (WebView) findViewById(R.id.webView1);
myWebView.setWebViewClient(new WebViewClient());
myWebView.loadUrl("https://google.com");
}
활동을 다음과 같이 만듭니다.
public class MainActivity extends Activity {
WebView browser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// find the WebView by name in the main.xml of step 2
browser=(WebView)findViewById(R.id.wvwMain);
// Enable javascript
browser.getSettings().setJavaScriptEnabled(true);
// Set WebView client
browser.setWebChromeClient(new WebChromeClient());
browser.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
// Load the webpage
browser.loadUrl("http://google.com/");
}
}
저는 같은 문제에 직면하고 있었고 Android의 WebView에 대한 공식 문서 솔루션을 찾았습니다.
여기 내꺼onCreateView()
방법과 여기서 나는 URL을 열기 위해 두 가지 방법을 사용했습니다.
방법 1은 브라우저에서 URL을 열고 있습니다.
방법 2는 원하는 웹 보기에서 URL을 여는 것입니다.
그리고 저는 제 애플리케이션에 Method 2를 사용하고 있으며 다음은 제 코드입니다.
public class MainActivity extends Activity {
private WebView myWebView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);
// Show the dummy content as text in a TextView.
if (mItem != null) {
/* Method : 1
This following line is working fine BUT when we click the menu item then it opens the URL in BROWSER not in WebView */
//((WebView) rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url);
// Method : 2
myWebView = (WebView) rootView.findViewById(R.id.detail_area); // get your WebView form your xml file
myWebView.setWebViewClient(new WebViewClient()); // set the WebViewClient
myWebView.loadUrl(mItem.url); // Load your desired url
}
return rootView;
} }
이 코드를 사용해 보십시오...
private void startWebView(String url) {
//Create new webview Client to show progress dialog
//When opening a url or click on link
webView.setWebViewClient(new WebViewClient() {
ProgressDialog progressDialog;
//If you will not use this method url links are opeen in new brower not in webview
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//Show loader on url load
public void onLoadResource (final WebView view, String url) {
if (progressDialog == null) {
// in standard case YourActivity.this
progressDialog = new ProgressDialog(view.getContext());
progressDialog.setMessage("Loading...");
progressDialog.show();
}
}
public void onPageFinished(WebView view, String url) {
try{
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}catch(Exception exception){
exception.printStackTrace();
}
}
});
// Javascript inabled on webview
webView.getSettings().setJavaScriptEnabled(true);
// Other webview options
/*
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.getSettings().setBuiltInZoomControls(true);
*/
/*
String summary = "<html><body>You scored <b>192</b> points.</body></html>";
webview.loadData(summary, "text/html", null);
*/
//Load url in webview
webView.loadUrl(url);
}
빈 페이지가 나타나면 JavaScript를 활성화합니다.
webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);
간단히 대답 이렇게 사용할 수 있습니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://www.google.com");
}
}
webChromeClient를 사용하는 경우 webChromeClient는 shouldOverrideUrlLoading을 제공하지 않으므로 webChromeClient와 webViewClient를 함께 사용하는 것이 좋습니다.둘 다 사용해도 괜찮습니다.
webview.webViewClient = WebViewClient()
webview.webChromeClient = Callback()
private inner class Callback : WebChromeClient() {
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
if (newProgress == 0) {
progressBar.visibility = View.VISIBLE
} else if (newProgress == 100) {
progressBar.visibility = View.GONE
}
}
}
URL 형식에 따라 다르다는 것을 방금 알았습니다.
- 브라우저에서 https://example.com/example 이 열립니다.
- webView에서 https://example.com/example/ (마지막에 / 포함)이 열립니다.
내 코드는 그냥 사용합니다.
webview.loadUrl(url)
설정할 필요 없음
webView.setWebViewClient(new WebViewClient())
적어도 내 경우에는.아마 여러분 중 몇몇에게는 유용할 것입니다.
문제는 외부 브라우저를 열지 않고 사이트 간에 전환하기 전에 기록을 삭제해야 한다는 것입니다.
@Override
public void onPageFinished(WebView view, String url) {
webView_.clearHistory();
super.onPageFinished(webView_, url);
}
언급URL : https://stackoverflow.com/questions/7746409/android-webview-launches-browser-when-calling-loadurl
'programing' 카테고리의 다른 글
이 두 개의 고차 함수 정의 사이에 차이점이 있습니까? (0) | 2023.06.21 |
---|---|
두 절대 경로를 비교하여 상대 경로 가져오기 (0) | 2023.06.21 |
Firebase Cloud Messaging을 사용하여 장치를 장치 메시지로 보내는 방법은 무엇입니까? (0) | 2023.06.16 |
VBA를 사용하여 컴퓨터에서 사용 중인 십진수 기호 탐지 (0) | 2023.06.16 |
log(10.0)는 컴파일할 수 있지만 log(0.0)는 정의되지 않은 참조로 컴파일할 수 없습니까? (0) | 2023.06.16 |