首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓系统中使用webview和tawk.to时遇到的问题

在安卓系统中使用webview和tawk.to时遇到的问题
EN

Stack Overflow用户
提问于 2021-07-10 06:32:42
回答 1查看 142关注 0票数 0

我正在使用tawk.to在我的应用程序中插入一个在线聊天,使用一个简单的WebView来加载聊天,但当我放入tawk.to的url时,它不会显示什么。对于任何其他的url,它都可以很好地加载页面,但不会加载聊天。我也试过页面'tawk.to‘,它会加载。

代码语言:javascript
复制
public class ChatOnlineActivity extends AppCompatActivity {

WebView chatOnlineWebVIew;
ProgressBar loadingChat;
/*MORE CODE HERE*/

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat_online);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    String url="https://tawk.to/chat/597771645dfc8255d623ede4/default?fbclid=IwAR3QB_DOoEu9ePTSPJbayOcTIaWtXjuJMUn46qLFTRVNnpPZBTZhsOy6lrs";
    //String url="https://tawk.to/"; //JUST TEST URLS

    loadingChat=(ProgressBar)findViewById(R.id.loadingChatOnline);
    chatOnlineWebVIew = (WebView) findViewById(R.id.chatWebView);

    WebSettings chatSetting=chatOnlineWebVIew.getSettings();
    chatSetting.setJavaScriptEnabled(true);
    //chatSetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

    chatOnlineWebVIew.setWebViewClient(new chatWebClient());
    //chatOnlineWebVIew.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
    chatOnlineWebVIew.loadUrl(url);
    /*MORE CODE HERE*/


private class chatWebClient extends WebViewClient{
    @Override
    public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
        loadingChat.setVisibility(View.VISIBLE);
        return super.shouldOverrideKeyEvent(view, event);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        return super.shouldOverrideUrlLoading(view, request);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        loadingChat.setVisibility(View.GONE);
        chatOnlineWebVIew.setVisibility(View.VISIBLE);
        Toast.makeText(getApplicationContext(),url,Toast.LENGTH_LONG).show(); //just massage to test if the urls is correct
        super.onPageFinished(view, url);
    }
}
}
EN

回答 1

Stack Overflow用户

发布于 2021-10-23 10:53:28

我也面临着同样的问题,我的WebView加载了url但没有显示,但现在我已经通过添加以下代码行解决了我的问题

代码语言:javascript
复制
 WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setBuiltInZoomControls(true);
    webSettings.setDisplayZoomControls(false);
    webSettings.setSupportZoom(true);
    webSettings.setDefaultTextEncodingName("utf-8");

我的最后一个活动如下所示

代码语言:javascript
复制
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import org.jetbrains.annotations.NotNull;

public class TawkToChatWebView extends AppCompatActivity {

private WebView webView;

Activity activity ;
private ProgressDialog progDailog;

@SuppressLint({"NewApi", "SetJavaScriptEnabled"})
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tawktochat);

    if (getSupportActionBar()!=null)
    {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    webView=findViewById(R.id.wv_chat);
    activity = this;

    progDailog = ProgressDialog.show(activity, "Loading","Please wait...", true);
    progDailog.setCancelable(false);


    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setBuiltInZoomControls(true);
    webSettings.setDisplayZoomControls(false);
    webSettings.setSupportZoom(true);
    webSettings.setDefaultTextEncodingName("utf-8");

    webView.setWebViewClient(new WebViewClient(){

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            progDailog.show();
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageFinished(WebView view, final String url) {
            progDailog.dismiss();
            Log.e("loading","finished");
        }
    });

    webView.loadUrl("ADD_YOUR_DIRECT_CHAT_LINK_HERE");
}

@Override
public boolean onOptionsItemSelected(@NonNull @NotNull MenuItem item) {
    if (item.getItemId()==android.R.id.home)
    {
        finish();
    }
    return super.onOptionsItemSelected(item);
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68323274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档