如何实现Twitter WebView



嗨,我在twitter WebView上工作。但twitter WebView的运行并不完美。我面临一些问题,比如

  1. 当点击推特时,它会在新页面上打开,但在背面按下它重新加载主页,而不是加载以前加载的主页页面和滚动位置到用户点击推特的位置。

  2. 在搜索页面上,我无法搜索任何关键字。当我键入任何重新加载搜索页面的软键板中的字符。

代码:

public class MainActivity extends AppCompatActivity {
private WebView webView;
@SuppressLint({"JavascriptInterface", "SetJavaScriptEnabled"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=findViewById(R.id.webview);
webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
webView.setWebViewClient(new WebViewClient());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setCookie("https://twitter.com/","uniqueId=10028; Domain=.codean.app");
String cookie = cookieManager.getCookie("https://twitter.com/");
webView.loadUrl("https://twitter.com/");
}
}
  1. 对于现有的,您需要在背后使用flag。这里是您的示例代码

    public class MainActivity extends AppCompatActivity {
    WebView webView;
    static boolean flag = true;
    @SuppressLint({"JavascriptInterface", "SetJavaScriptEnabled"})
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView=findViewById(R.id.web_view);
    webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setAppCacheEnabled(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
    //webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
    webView.setWebViewClient(new WebViewClient());
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    cookieManager.setCookie("https://twitter.com/","uniqueId=10028; Domain=.codean.app");
    String cookie = cookieManager.getCookie("https://twitter.com/");
    webView.loadUrl("https://twitter.com/");
    if(flag)
    Log.d("ONCREATE", "flag is true");
    }
    @Override
    public void onBackPressed() {
    if (webView.canGoBack()) {
    webView.goBack();
    Log.d("ONBACK", "CALLED" );
    flag = false;
    } else {
    super.onBackPressed();
    }
    }}
    
  2. 无法搜索关键字,这行代码创建问题,您需要删除这行代码并使其正常工作。

    webView.getSettings((.setUserAgentString("Mozilla/5.0(Linux;U;Android 2.0;en-us;Droid Build/ESD20(AppleWebKit/530.17(KHTML,类似Gecko(Version/4.0 Mobile Safari/530.17"(;

1-我认为您在返回webview时所面临的问题可以像下面这样使用。

@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}

2-您是否使用网络视图点击或软键完成/搜索输入法进行搜索?

当WebView覆盖URL加载时,它会自动累积访问过的网页的历史记录。您可以使用goBack()goForward().在历史中前后导航

例如,下面显示了"活动"如何使用设备"后退"按钮向后导航:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
// If it wasn't the Back key or there's no web page history, bubble up to the default
// system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}

如果实际存在供用户访问的网页历史记录,则canGoBack()方法返回true。同样,您可以使用canGoForward()来检查是否存在正向历史。如果不执行此检查,那么一旦用户到达历史记录的末尾,goBack()goForward()将不执行任何操作。

最新更新