Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call an Android Activity from PhoneGap

I am new to PhoneGap and I am able to implement the basic app with PhoneGap, now to enhance it further, I want to connect PhoneGap with Android Activities, basically what I plan is to call startActivity() method using a javascript function.

I tried Communication between Android Java and Phonegap Javascript?

but I failed to call an activity, causing force close error. Do help me out, awaiting a reply!

like image 740
Aditya Gaykar Avatar asked Sep 03 '11 10:09

Aditya Gaykar


2 Answers

Any Java Native code call be called without using any plugin as following.

Follow The following Steps.

  1. Replace the following code with your existing DroidGap Activity.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.init(); // Calling this is necessary to make this work
        appView.addJavascriptInterface(this, "MainActivity");
    
        /* "this" points the to the object of the current activity. "MainActivity" is used to refer "this" object in JavaScript as in Step 3. */
    
        super.loadUrl("file:///android_asset/www/index.html");
    }
    
  2. Add the custom function in current (this) activity as following.

    public void customFunctionCalled() {
        Log.e("Custom Function Called", "Custom Function Called");
    }
    
  3. Now call this function from your HTML/JavaScript code as following.

    <script type="text/javascript">
        function callNewActivity() {
            window.MainActivity.customFunctionCalled();
        }
    </script>
    

This will call customFunctionCalled() in MainActivity.

Tested Environment Eclipse - 3.7.2 Android 2.2 Emulator PhoneGap - 2.0.0

Please provide your comments here to improve blogs post. http://phonegapexplorers.blogspot.in/2012/08/call-native-java-code-phonegap-android.html

like image 183
AvtarSingh Suchariya Avatar answered Sep 27 '22 21:09

AvtarSingh Suchariya


Its hard without knowing more about what you're trying to do exactly, but going down the road of writing a plugin is probably the way to go. Check out;

http://smus.com/android-phonegap-plugins

This plugin might work for you as is, or give you good pointers in how to do this yourself.

like image 39
Mike P Avatar answered Sep 27 '22 22:09

Mike P