2016-10-04 14 views
0

私はアンドロイドでwebviewのページを読み込んでいます。ページには、次のコード、NBを持つ要素(ボタン)があります - それは、第三者のウェブサイトで、私はここに示したコードを制御することはできませんが: -どのようにアンドロイドwebviewでjavascriptインターフェイスを挿入するには?

<i class="icon close cardClose" role="button" title="Close recently linked screen" tabindex="0"></i> 

を私はのようにjavascriptのインタフェースを追加します以下の方法: -

private class myWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      view.addJavascriptInterface(new Object() 
      { 
       @JavascriptInterface 
       public void performClick() throws Exception 
       { 
        Toast.makeText(Activity.this, "Login clicked", Toast.LENGTH_LONG).show(); 
       } 
      }, "login"); 
      return true; 
     } 
    } 


mWebView.setWebViewClient(new myWebViewClient()); 

しかし、問題は、WebViewのソースコードが言うことである: -

* @param object the Java object to inject into this WebView's JavaScript 
    *    context. Null values are ignored. 
    * @param name the name used to expose the object in JavaScript 
    */ 
    public void addJavascriptInterface(Object object, String name) { 
     checkThread(); 
     mProvider.addJavascriptInterface(object, name); 
    } 

ボタンdoesnotは、 "名前" という名前の属性を持っているようです。ある人が知識を持っているならば、同じことにいくつかの洞察を投げてください。私はあなたがこのよう

view.addJavascriptInterface(new JavaScriptInterfaceNew(getActivity(), this), "Android_Normal_Test"); 

、ここJavaScriptInterfaceNewそれを使用するために推薦

+0

にいくつかのイベントを渡す必要があるとき、あなたのクラス名とAndroid_Normal_Testがあなたのオブジェクトになりますです私たちがメソッドにアクセスできるJavascriptInterfaceオブジェクト名を渡す –

+0

@RahulKhuranaその名前を取得するには? –

+0

私は匿名の内部クラスを使用しません。私が知っている 'addJavascriptInterface()'のすべての例は、名前付きクラスを使用しています。 – Robert

答えて

0

はあなたがする必要があるwebviewからごactivity class

+0

答えをより明確にして、質問に記載されているサンプルコードに固執してください。私はJavaスクリプトの専門家ではないので、それが理由です。 –

+0

performClickメソッドを実行しますか? –

+0

はい、私は質問の中で尋ねたhtmlコードのbuttonのperformClickメソッドを実行したいと思います。 –

関連する問題