#android #sharepoint #webview #webchromeclient #android-websettings
#Android #sharepoint #веб-просмотр #webchromeclient #android-websettings
Вопрос:
У меня есть Android WebView
, на котором я хочу показать страницу, но некоторые элементы страницы не отображаются.
Поскольку это страница, связанная с работой, и вам нужна учетная запись для доступа к ней, но она размещена внутри Microsoft Sharepoint
.
На рисунке 1 (слева) WebView
не отображаются 2 строки заголовка, которые можно увидеть на рисунке 2 (справа), а также в середине есть плавающая кнопка, которая переходит к представлениям, которая также не отображается в Android WebView
.
Picutre 2 — это страница в обычном веб-браузере, но в мобильном представлении. Я также попытался открыть страницу обычным способом через браузер телефона, и она также работала нормально.
Вот простой WebView
, который выдает ту же ошибку:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setDomStorageEnabled(true);
myWebView.loadUrl("https://secret.webpage.com");
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
}
<ConstraintLayout>
<WebView
android:id="@ id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</ConstraintLayout>
Я попытался внедрить пользовательский браузер Chromium, внедрив BaseChromeClient, но это также не дало никаких результатов.
Если есть вопросы о веб-странице, я дам ответы, как только смогу.
Комментарии:
1. Вы пытались отлаживать / находить ошибки с помощью удаленной отладки WebView или проверять, использует ли ваш сайт функции, которые Chrome Custom Tab может решить?
2. Я действительно не нашел ничего полезного,
WebView Debugging
но спасибо, что указали на это, это может быть полезно в будущем. ТакжеChrome Custom Tab
, насколько я понял, нужно открывать приложения во внешнем браузере, но я хочу открыть его внутри моегоWebView
. Еще одна вещь, которую я могу добавить, это то, что страница размещается внутриMicrosoft Sharepoint
.3. Как это выглядит, когда вы открываете ссылку в мобильном представлении в браузере? можно показать здесь 🙂
4. Возможно, например, sharepoint не отображает эти верхние строки из-за пользовательского агента по умолчанию, используемого WebView. Сначала я бы включил удаленную отладку для webview,
WebView.setWebContentsDebuggingEnabled(true)
а затем подключил к нему настольный Chrome, чтобы посмотреть, как выглядит HTML. Если верхние строки отсутствуют, попробуйте изменить User-Agent на что-то похожее на браузер по умолчаниюwebview.getSettings().setUserAgentString(...)
.
Ответ №1:
Чтобы сохранить ориентацию и размер экрана webview, чтобы предотвратить разрушение содержимого веб-страницы при изменении ориентации, пожалуйста, добавьте эту строку в свой xml.
<WebView
...
android:configChanges="orientation|screenSize"
/>
И заголовки веб-страниц могут быть размещены за панелью навигации Android, поэтому, пожалуйста, попробуйте скрыть панель навигации Android на странице.
И не могли бы вы также поделиться своим html / css-кодом веб-страницы?
Ответ №2:
Я думаю, у вас должен быть макет рамки для плавающей кнопки действия. Попробуйте это.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>