Нужен ли WebView клиент WebView для работы? - PullRequest
10 голосов
/ 05 января 2012

Я изучал руководства для Android и попробовал пример WebView.Вот чем я закончил:

WebAppActivity

public class WebAppActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        WebView wv = (WebView) findViewById(R.id.webView1);
        wv.loadUrl("http://www.google.com");

    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </WebView>

</LinearLayout>

Но вместо этогозагрузки страницы в самом приложении, как только приложение запускается, открывается браузер Android по умолчанию и страница загружается в браузер вместо приложения.Когда я нажимаю назад, я возвращаюсь к активности приложения, которая отображает пустой экран.

Кто-нибудь знает, почему это происходит?

Редактировать:

манифест

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".WebAppActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Это было просто для того, чтобы показать, что я добавил разрешение ИНТЕРНЕТ

Редактировать:

Как только я добавлю WebViewClient,

wv.setWebViewClient(new WebViewClient() {});

страница загружается в приложение.Это ожидаемое поведение?Требуется ли для Android WebView WebViewClient?(не смог найти никакой документации по нему)

Редактировать:

Я заметил, что эта проблема возникает, когда я устанавливаю apk в эмуляторе, который имеет API Google.В обычном эмуляторе (без API Google) он ведет себя как ожидалось.

Ответы [ 5 ]

3 голосов
/ 12 января 2012

Да, вы должны установить WebViewClient, который возвращает true для переопределенного метода 'shouldOverrideUrlLoading', чтобы ваше веб-представление загружало URL в ваше приложение.

Дайте мне знать, если вам нужен пример.


Редактировать

@ Aki Документация WebViewClient.shouldOverrideUrlLoading

Дать хост-приложению возможность взять на себя управление, когда новый URLсобирается быть загруженным в текущем WebView. Если WebViewClient не предоставлен, по умолчанию WebView попросит Activity Manager выбрать правильный обработчик для URL .Если предоставляется WebViewClient, возвращаемое значение true означает, что хост-приложение обрабатывает URL, а возвращаемое значение false означает, что текущий WebView обрабатывает URL-адрес.

0 голосов
/ 01 мая 2013

Единственная причина, по которой URL открывается в браузере Android по умолчанию, это "wv.loadUrl (" http://www.google.com");"

Когда вы загружаете http://www.google.com,, сайт Google фактически перенаправляет страницу на http://www.google.co.in (при условии, что вы запускаете приложение из Индии).

Если вы запустите "wv.loadUrl (" http://www.google.co.in");",, Google не перенаправит страницу, и первая страница откроется в вашем приложении, а в браузере системы будут открыты дальнейшие клики.

Для обработки дальнейших кликов вам необходим WebViewClient.

0 голосов
/ 01 мая 2013

Для загрузки веб-страницы с URL-адреса в веб-просмотр не требуется настраивать клиент веб-просмотра.Без клиента веб-просмотра вы можете загрузить веб-страницу в веб-просмотр.Но WebViewClient дает много преимуществ для обработки веб-просмотра.Пример использования для загрузки веб-страницы с URL,


webView.loadUrl(yoururl);
0 голосов
/ 14 января 2012

Нет, не совсем, но это позволяет вам делать много вещей.

Обратите внимание, что выполнение вызова shouldOverrideUrlLoading в WebViewClient, похоже, тоже не работает, поэтому вам следует выполнить обработку в onPageFinished.

Вот сообщение в блоге , которое проведет вас через.

0 голосов
/ 05 января 2012
private WebView webVenue;
private WebSettings websettings;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.schedule_time);

        webVenue = (WebView)findViewById(R.id.webview_schedule_time);
        txtEmptyMsg = (TextView)findViewById(R.id.txtEmptyMsg);

        mContext = this;        
        webVenue.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webVenue.getSettings().setJavaScriptEnabled(true);
        websettings=webVenue.getSettings();
        webVenue.setScrollBarStyle(ScrollView.SCROLLBARS_OUTSIDE_OVERLAY);
        webVenue.loadUrl(URL);
}
}

All The Best ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...