我試圖創建一個谷歌形式調查並認爲這是一個很好的機會,以獲得一個Android開發的味道一個kiosk包裝(我的第一次嘗試是)。webview loadUrl停止工作AFTER控件在谷歌表單上獲取焦點
問題
我重寫,以便在onBackPressed()
允許用戶跳轉到我主頁時,我意識到,一旦用戶已經獲得焦點(鏈接到各種調查的索引頁)到調查表單上的一些輸入字段,我不再能夠加載主頁(loadUrl)。
我無法在其他網站(如google.com)的輸入字段中複製此行爲。因此,我的猜測是,谷歌表格使用一些複雜的JavaScript(?),並以某種方式混淆隨後的loadUrl
調用?但這是我在java或android上的第一次嘗試,我很慚愧地承認我在黑暗中摸索。
我的代碼表現出的問題
我已經下調錶現出的問題到最低限度的代碼。這兩個loadUrl()
調用,打開我創建的示例谷歌表單。如果有人能指出我的錯誤,併爲我解決這個問題提供一些指導,我會很高興!
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
public class MainActivity extends AppCompatActivity {
protected FrameLayout webViewPlaceholder;
protected WebView webView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize the UI
initUI();
}
protected void initUI()
{
// Retrieve UI elements
webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder));
// Initialize the WebView if necessary
if (webView == null)
{
// Create the webview
webView = new WebView(this);
webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
webView.getSettings().setSupportZoom(true);
webView.getSettings().setJavaScriptEnabled(true);
// Load the URLs inside the WebView, not in the external web browser
webView.setWebViewClient(new WebViewClient());
// Load a page
webView.loadUrl("https://docs.google.com/forms/d/e/1FAIpQLSdkbLwUPSPL1fx1oL8iMyLkBiMY591qjZ-xwCEf15fyX3ikYw/viewform");
}
// Attach the WebView to its placeholder
webViewPlaceholder.addView(webView);
}
@Override
public void onBackPressed() {
webView.loadUrl("https://docs.google.com/forms/d/e/1FAIpQLSdkbLwUPSPL1fx1oL8iMyLkBiMY591qjZ-xwCEf15fyX3ikYw/viewform");
}
行爲
因爲它是,它會加載樣品調查表。如果你按下android UI後退按鈕,它會重新加載它(爲了簡化,在這個例子中,我使用與主頁相同的URL)。如果您向前導航(調查的第二步),則android UI後退按鈕會將您帶到封面頁上,表明確實loadUrl()
有效。但是,如果在第二步中將焦點置於文本字段(或單選按鈕)上,則android UI後退按鈕將停止運行。
錯誤
每次我按下UI後退按鈕(無論它是否有效與否,我得到以下錯誤):
W/UnimplementedWebViewApi: Unimplemented WebView method onKeyDown called from: android.webkit.WebView.onKeyDown(WebView.java:2310)
之前的代碼剝離下來到最基本的要素,我倒是獲得下一個消息,而不是:兩個錯誤消息
Webview loadUrl won't work after user focuses on google forms form controls (error InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient)
我發現多個職位,但沒有什麼,我可能涉及到。任何幫助將非常感激!