Communication between Android Java and Phonegap Javascript?

41down votefavorite
46

I believe that it's possible to call Java methods from (PhoneGap) Javascript.

Anyone knows how to do that?? (I know how to do it by changing the source code of PhoneGap, but I'd avoid that)

up vote72down voteaccepted

I finally made it work.

  • Create a class with methods you want to use:

    publicclassMyClass{privateWebView mAppView;privateDroidGap mGap;publicMyClass(DroidGap gap,WebView view){
        mAppView = view;
        mGap = gap;}publicString getTelephoneNumber(){TelephonyManager tm =(TelephonyManager) mGap.getSystemService(Context.TELEPHONY_SERVICE);String number = tm.getLine1Number();return number;}}
  • In your main activity add a Javascript interface for this class:

    publicclassMainextendsDroidGap{privateMyClass mc;@Overridepublicvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);super.init();
    
            mc =newMyClass(this, appView);
            appView.addJavascriptInterface(mc,"MyCls");super.loadUrl(getString(R.string.url));}}
  • In Javascript call window.MyCls methods:

    <script>
      $(function(){
        $("#phone").text("My telephone number is: "+ 
                window.MyCls.getTelephoneNumber());});</script>

相关推荐