2016-10-25 7 views
-1

私はAndroidでキーボードを開発しています。キーボードにはWebViewが含まれています。ユーザーがWebViewでWebページの入力領域をクリックすると、キーボードパネルが表示されます。 WebViewのすべてのコールバックを確認した後、コールバックが呼び出されたことが見つかりません。ユーザーが入力領域をクリックして何かをしたことをどのように知ることができますか?AndroidでWebViewの入力領域のクリックコールバックを取得する方法

+0

ウェブビューでjavascriptとjavascriptインターフェイスのバインドを使用する – njzk2

+0

@ njzk2ウェブページはgoogle.comと同じように管理されていません。私たちはページにjavascriptを追加することはできません。もちろん –

+0

できます。ページが読み込まれた後、jsを実行することができます。 – njzk2

答えて

-1

それをチェックしてください:

public class WebViewClicker extends Activity implements OnTouchListener, Handler.Callback { 

    private static final int CLICK_ON_WEBVIEW = 1; 
    private static final int CLICK_ON_URL = 2; 

    private final Handler handler = new Handler(this); 

    private WebView webView; 
    private WebViewClient client; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.web_view_clicker); 

     webView = (WebView)findViewById(R.id.web); 
     webView.setOnTouchListener(this); 

     client = new WebViewClient(){ 
      @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       handler.sendEmptyMessage(CLICK_ON_URL); 
       return false; 
      } 
     }; 

     webView.setWebViewClient(client); 
     webView.setVerticalScrollBarEnabled(false); 
     webView.loadUrl("http://www.example.com"); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (v.getId() == R.id.web && event.getAction() == MotionEvent.ACTION_DOWN){ 
      handler.sendEmptyMessageDelayed(CLICK_ON_WEBVIEW, 500); 
     } 
     return false; 
    } 

    @Override 
    public boolean handleMessage(Message msg) { 
     if (msg.what == CLICK_ON_URL){ 
      handler.removeMessages(CLICK_ON_WEBVIEW); 
      return true; 
     } 
     if (msg.what == CLICK_ON_WEBVIEW){ 
      Toast.makeText(this, "WebView clicked", Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
    } 

私が見つけたのは何のWebViewがOnTouchListenerにタッチイベントを送信することです。それは独自のonTouchEventメソッドを持っていますが、私はそのメソッドを使ってMotionEvent.ACTION_MOVEを取得したように見えました。

登録されたタッチイベントリスナーでイベントを取得できれば、ユーザーがURLをクリックしたときにタッチで実行したい操作を回避する方法が残っています。

これは、ユーザーがURLをクリックしたことでタッチが発生した場合、タッチの遅延メッセージを送信し、その後にそれらのタッチメッセージを削除することによって、手の込んだハンドラフットワークで実現できます。

+0

これは、ユーザーがURLをクリックした場合のみ表示されます。必要なのは、ユーザーが入力領域をクリックしたときに呼び出されるコールバックです。 –

+0

これをチェックしてくださいhttp://stackoverflow.com/questions/2236362/android-click-within-webview-causes-callback-to-android-application –

関連する問題