1

I'm trying to use a Phonegap plugin and am having trouble. This is my first time using a plugin with Phonegap.

The plugin I'm using is ChildBrowser for Android.

I have linked the Javascript files in the headers.

<script src="cordova-1.7.0.js" type="text/javascript"></script>
<script src="childbrowser.js" type="text/javascript"></script>

Also have followed steps 2, 3, and 4 listed on the Github page.

I try using the ChildBrowser plugin within a link:

<a href="#" onClick="window.plugins.childBrowser.openExternal("http://www.google.com");">Test</a>

When the link is clicked nothing happens.

Is there anything I'm missing? Do I have to add some code within the header to intialize the child browser plugin?

Application Zip File.

Logcat Returns

D/CordovaLog(  885): Error: Status=2 Message=Class not found
D/CordovaLog(  885): file:///android_asset/www/cordova-1.7.0.js: Line 958 : Error: Status=2 Message=Class not found
I/Web Console(  885): Error: Status=2 Message=Class not found at file:///android_asset/www/cordova-1.7.0.js:958

*EDIT: Based on my research on the web, the error I'm getting is most commonly triggered when the plugin is not referenced correctly from the plugins.XML file. I have double-checked and made sure it's right.

I'm wondering if it's possible that the src folder location is incorrect. I have the src folder in the root of my project, which also contains my index.html, css, and javascript. I've noticed some people building Phonegap applications have a folder named www which contains the index.html, instead of just including it in the root of the project.*

mram888
  • 4,899
  • 5
  • 33
  • 59
Philip Kirkbride
  • 21,381
  • 38
  • 125
  • 225

6 Answers6

13

In PhoneGap version 2.0, you have to add the following line to res/xml/config.xml instead of res/xml/plugins.xml:

<plugin name="ChildBrowser" value="com.phonegap.plugins.childBrowser.ChildBrowser"/>

Not sure whether this applies to PhoneGap version 1.7.

Leon Chung
  • 329
  • 2
  • 6
2

It looks like the value for the onClick attribute is malformed, you can't use "" for strings inside another '"', i.e. it should look like:

<a href="#" onClick="window.plugins.childBrowser.openExternal('http://www.google.com');">Test</a>
johlo
  • 5,422
  • 1
  • 18
  • 32
2

Don't know if you have solved the problem. I had the same problem and after a bit of research I found that I had to add these lines in the AndroidManifest.xml file:

<activity android:name="com.phonegap.plugins.childBrowser.ChildBrowser" android:label="@string/app_name">
   <intent-filter>
   </intent-filter>
</activity>

Although this wasn't mentioned in the readme file...

Praveenkumar
  • 24,084
  • 23
  • 95
  • 173
Ellene
  • 21
  • 2
1

It looks like you are using an older version of the ChildBrowser. You should grab the latest ChildBrowser code from github as it updates the references to PhoneGap with cordova.

Other than that what do you see in "adb logcat" when you click on your link?

Simon MacDonald
  • 23,253
  • 5
  • 58
  • 74
1

Your folder structure is wrong, I think. Which version of Phonegap are you using? The structure should be:

Main Folder
  - assets
    - www
     - index.html
     - childbrowser.js
     - etc
    - libs
    - res
    - src
      - com
        - phonegap
          - plugin(s)
            - childbrowser
dda
  • 6,030
  • 2
  • 25
  • 34
  • Ignore last comment. Reconstructed as you suggested and when I run build a index.html file is created in Main Folder which just says "PhoneGap is working". – Philip Kirkbride May 24 '12 at 15:08
  • I've re-posted the new problem caused by your solution as another question. http://stackoverflow.com/questions/10740555/phonegap-doesnt-see-assets-www-index-html – Philip Kirkbride May 24 '12 at 17:22
0

In the child browser.js file add the following code above the function childbrowser()

(function() {

var cordovaRef = window.PhoneGap || window.Cordova || window.cordova; and close the function at last.