Intereting Posts
Шифрование с помощью модуля Node.js Crypto и расшифровка с помощью Java (в приложении для Android) NotificationManager получает уведомление по идентификатору Жизненный цикл базы данных Sqlite? Он удаляется, когда приложение закрыто? Используются ли ограничения API Карт Google для приложений Android? Проблема с полем пароля android, а не скрытие последнего введенного символа Как поймать систему трансляции BOOT_COMPLETED, моя программа просто не работает? Android: что такое inputType для имени пользователя Странный сбой на устройствах samsung Различные ширины и высоты от DisplayMetrics и $ (window) .width () в WebView Есть ли способ вызвать код python в Android-версии без установки sl4a? Как можно управлять вариантами вывода с помощью Android Gradle Plugin 3.0.0+? Как сделать ImageView в круговой форме? Как заставить GPRS-соединение вместо 3G или Wi-Fi? Android – Изменить цвет текста заголовка панели действий Как сохранить изображение в формате JPEG на Android с пользовательским уровнем качества

WebView не загружает веб-страницу

Я использую WebView для загрузки веб-сайта. Но он очень медленный и протекает при загрузке определенных веб-сайтов. Я загружаю WebView со следующим кодом.

 @Override protected void onNewIntent(Intent intent) { if (intent.getStringExtra("url") != null) { webView.loadurl(intent.getStringExtra("url")); } } 

Но я webView.loadUrl(Config.URL); ( Config.URL может содержать тот же url, что указан выше) в onCreate() после инициализации WebView следующим образом.

  this.webView = (WebView) findViewById(R.id.wv); this.webView.getSettings().setJavaScriptEnabled(true); this.webView.getSettings().setLoadsImagesAutomatically(true); this.webView.getSettings().setDomStorageEnabled(true); this.webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); MyClient client = new MyClient(WebActivity.this, (ProgressBar)findViewById(R.id.progressBar)); webView.setWebViewClient(client); 

Загрузка a из onCreate() работает нормально (не очень хорошо, это слишком медленно). Но тот же URL-адрес, который загружается из onNewIntent() , не работает !!! , После того, как я сделал это в onNewIntent() URL-адреса не были загружены с помощью webView.loadurl() и текущая страница становится неподвижной. то есть. WebView прокрутки перемещаются в WebView но страница не прокручивается. Я тестировал один и тот же URL-адрес в onCreate() и он работает.

Для этого я передаю URL с

 intent.putExtra("url", Config.URL+targetUrl); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

С ожидаемым намерением от уведомлений. Хотя он работает в некоторых устройствах, например Google Nexus. Но он не работает на большинстве телефонов. у меня есть

 android:hardwareAccelerated="true" 

Мой клиент

 public class MyClient extends WebViewClient{ private Context context; private Activity activity; private Handler handler; private Runnable runnable; private ProgressBar viewBar; private String ret,ret2; public void setFirstLoad(boolean firstLoad) { this.firstLoad = firstLoad; } private boolean firstLoad=false; public MyClient(Activity activity, ProgressBar bar) { this.context = activity.getApplicationContext(); this.activity = activity; viewBar=bar; handler=new Handler(); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { /*if (url.startsWith("tel:")) { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); }else if(url.startsWith("http:") || url.startsWith("https:")) { *//*view.setVisibility(View.GONE); viewBar.setVisibility(View.VISIBLE);*//* view.loadUrl(url); } return true;*/ if (Uri.parse(url).getHost().equals("www.somepage.com")) { return false; } // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs try { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); Answers.getInstance().logShare(new ShareEvent() .putContentId(Build.USER) .putMethod(shareName(url)) .putContentName(contentDecode(url)) .putContentType("news_share")); }catch (android.content.ActivityNotFoundException e){ Log.e("Activity not found",e.toString()); Toast.makeText(context,"Application not found",Toast.LENGTH_LONG).show(); } return true; } @Override public void onReceivedError(final WebView view, int errorCode, String description, final String failingUrl) { //Clearing the WebView try { view.stopLoading(); } catch (Exception e) { } try { view.clearView(); } catch (Exception e) { } if (view.canGoBack()) { view.goBack(); } view.loadUrl("about:blank"); //Showing and creating an alet dialog AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity); alertDialog.setTitle("Error"); alertDialog.setMessage("No internet connection was found!"); alertDialog.setPositiveButton("Retry", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { view.loadUrl(failingUrl); } }); AlertDialog alert = alertDialog.create(); alert.show(); //Don't forget to call supper! super.onReceivedError(view, errorCode, description, failingUrl); } @Override public void onLoadResource(final WebView view, String url) { super.onLoadResource(view, url); //injectScriptFile(view, "js/script.js"); injectCSS(view,"css/style.css"); if (firstLoad){ firstLoad=false; view.setVisibility(View.INVISIBLE); viewBar.setVisibility(View.VISIBLE); runnable=new Runnable() { @Override public void run() { viewBar.setVisibility(View.GONE); view.setVisibility(View.VISIBLE); } }; handler.postDelayed(runnable,2000); } // test if the script was loaded // view.loadUrl("javascript:setTimeout(hideMe(), 200)"); } /*@Override public void onPageFinished(final WebView view, String url) { //System.gc(); }*/ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); System.gc(); } 

Возникает вопрос: в чем проблема при использовании loadurl() в onNewIntent() ?

Solutions Collecting From Web of "WebView не загружает веб-страницу"

Попробуйте, откуда вы загружаете webview

  web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } }); 

Вы можете использовать веб-клиент для обработки веб-просмотра. Здесь я включаю javascript с загрузкой.

  String aboutURL="YOUR URL"; final ProgressDialog pd = ProgressDialog.show(, "", "Please wait", true); WebSettings settings=Webview.getSettings(); settings.setJavaScriptEnabled(true); settings.setAppCacheEnabled(true); settings.setDomStorageEnabled(true); settings.setLoadsImagesAutomatically(true); settings.setDatabaseEnabled(true); settings.setRenderPriority(WebSettings.RenderPriority.HIGH); settings.setCacheMode(WebSettings.LOAD_NO_CACHE); settings.setSupportZoom(true); settings.setBuiltInZoomControls(true); Webview.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { pd.show(); } @Override public void onPageFinished(WebView view, String url) { pd.dismiss(); } }); Webview.loadUrl(aboutURL); 

Здесь Загрузка обрабатывается на основе сети