title: how to get the values from a phonegap plugin in java script?
body: <p>I have to get the calllog from mobile and send as email.My problem is I dont know how to get the values from calllog plugin in script format to send as email.Can anybody help me with this??I have posted my code also..</p>
  
  <p><strong>Calllistplugin.java</strong></p>
  
  <pre><code> public class CallListPlugin extends Plugin {
  
          /** List Action */
          private static final String ACTION = "list";
          private static final String CONTACT_ACTION = "contact";
          private static final String SHOW_ACTION = "show";
          private static final String TAG = "CallListPlugin";
  
          /*
           * (non-Javadoc)
           * 
           * @see com.phonegap.api.Plugin#execute(java.lang.String,
           * org.json.JSONArray, java.lang.String)
           */
          @Override
          public PluginResult execute(String action, JSONArray data, String callbackId) {
              Log.d(TAG, "Plugin Called");
              PluginResult result = null;
              if (ACTION.equals(action)) {
                  try {
                      int limit = -1;
                      System.out.println("DATA"+data);
  
                      //obtain date to limit by
                      if (!data.isNull(0)) {
                          String d = data.getString(0);
                          Log.d(TAG, "Time period is: " + d);
                          if (d.equals("week"))
                              limit = -7;
                          else if (d.equals("month"))
                              limit = -30;
                          else if (d.equals("all"))
                              limit = -1000000; // LOL
                      } 
  
                      //turn this into a date
                      Calendar calendar = Calendar.getInstance();
                      calendar.setTime(new Date());
                      calendar.add(Calendar.DAY_OF_YEAR, limit);
                      Date limitDate = calendar.getTime();
                      String limiter = String.valueOf(limitDate.getTime());
  
                      //now do required search
                      JSONObject callInfo = getCallListing(limiter);
                      Log.d(TAG, "Returning " + callInfo.toString());
                      result = new PluginResult(Status.OK, callInfo);
  
                  } catch (JSONException jsonEx) {
                      Log.d(TAG, "Got JSON Exception " + jsonEx.getMessage());
                      result = new PluginResult(Status.JSON_EXCEPTION);
                  }
              } else if (SHOW_ACTION.equals(action)) {
                  try {
                      if (!data.isNull(0)) {
                          viewContact(data.getString(0));
                      } 
                  } catch (JSONException jsonEx) {
                      Log.d(TAG, "Got JSON Exception " + jsonEx.getMessage());
                      result = new PluginResult(Status.JSON_EXCEPTION);
                  } catch (Exception e) {}
              } else if (CONTACT_ACTION.equals(action)) {
                  try {
                      String contactInfo = getContactNameFromNumber(data.getString(0));
                      Log.d(TAG, "Returning " + contactInfo.toString());
                      result = new PluginResult(Status.OK, contactInfo);
                  } catch (JSONException jsonEx) {
                      Log.d(TAG, "Got JSON Exception " + jsonEx.getMessage());
                      result = new PluginResult(Status.JSON_EXCEPTION);
                  }
              } else {
                  result = new PluginResult(Status.INVALID_ACTION);
                  Log.d(TAG, "Invalid action : " + action + " passed");
              }
              return result;
          }
  
          /**
           * Gets the Directory listing for file, in JSON format
           * 
           * @param file
           *            The file for which we want to do directory listing
           * @return JSONObject representation of directory list. e.g
           *         {"filename":"/sdcard"
           *         ,"isdir":true,"children":[{"filename":"a.txt"
           *         ,"isdir":false},{...}]}
           * @throws JSONException
           */
          private JSONObject getCallListing(String period) throws JSONException {
  
              JSONObject callLog = new JSONObject();
  
              String[] strFields = { 
                      android.provider.CallLog.Calls.DATE,
                      android.provider.CallLog.Calls.NUMBER,
                      android.provider.CallLog.Calls.TYPE,
                      android.provider.CallLog.Calls.DURATION,
                      android.provider.CallLog.Calls.NEW,
                      android.provider.CallLog.Calls.CACHED_NAME,
                      android.provider.CallLog.Calls.CACHED_NUMBER_TYPE,
                      android.provider.CallLog.Calls.CACHED_NUMBER_LABEL 
                      };
  
              try {
                  Cursor callLogCursor = ctx.getContentResolver().query(
                          android.provider.CallLog.Calls.CONTENT_URI, 
                          strFields,
                          CallLog.Calls.DATE + "&gt;?",
                          new String[] {period},
                          android.provider.CallLog.Calls.DEFAULT_SORT_ORDER);
  
                  int callCount = callLogCursor.getCount();
  
                  if (callCount &gt; 0) {
                      JSONObject callLogItem = new JSONObject();
                      JSONArray callLogItems = new JSONArray();
  
                      callLogCursor.moveToFirst();
                      do {
                          callLogItem.put("date", callLogCursor.getLong(0));
                          callLogItem.put("number", callLogCursor.getString(1));
                          callLogItem.put("type", callLogCursor.getInt(2));
                          callLogItem.put("duration", callLogCursor.getLong(3));
                          callLogItem.put("new", callLogCursor.getInt(4));
                          callLogItem.put("cachedName", callLogCursor.getString(5));
                          callLogItem.put("cachedNumberType", callLogCursor.getInt(6));
                          //callLogItem.put("name", getContactNameFromNumber(callLogCursor.getString(1))); //grab name too
                          callLogItems.put(callLogItem);
                          callLogItem = new JSONObject(); 
                      } while (callLogCursor.moveToNext());
                      callLog.put("rows", callLogItems);
                      System.out.println("CALLLOG"+callLogItems);
                      System.out.println("CALLLOGDETAILS"+callLog);
  
                  }
  
                  callLogCursor.close();
              } catch (Exception e) {
                  Log.d("CallLog_Plugin",
                          " ERROR : SQL to get cursor: ERROR " + e.getMessage());
              }
  
              return callLog;
          }
  
  
  
  
          /**
           * Show contact data based on id
           * @param number
           */
          private void viewContact(String number) {
              Intent i = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT, 
                      Uri.parse(String.format("tel: %s", number)));
              this.ctx.startActivity(i);
          }
  
  
          /**
           * Util method to grab name based on number
           * 
           */
          private String getContactNameFromNumber(String number) {
              // define the columns I want the query to return
              String[] projection = new String[] { Contacts.Phones.DISPLAY_NAME, Contacts.Phones.NUMBER };
  
              // encode the phone number and build the filter URI
              Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));
  
              // query time
              Cursor c = ctx.getContentResolver().query(contactUri, projection, null, null, null);
  
              // if the query returns 1 or more results
              // return the first result
              if (c.moveToFirst()) {
                  String name = c.getString(c.getColumnIndex(Contacts.Phones.DISPLAY_NAME));
                  c.deactivate();
                  return name;
              }
  
              // return the original number if no match was found
              return number;
          }
      }
  </code></pre>
  
  <p><strong>backup.html</strong></p>
  
  <pre><code>&lt;html&gt;
  &lt;head&gt;
  
  &lt;center&gt;Phone Log&lt;/center&gt;
  
  &lt;style type="text/css"&gt;
  body {
      background-image: url(images/background.png);
  }
  &lt;/style&gt;
  
  &lt;script type="text/javascript" charset="utf-8" src="cordova-1.8.0.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript" charset="utf-8" src="Calllog.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript" charset="utf-8" src="webintent.js"&gt;&lt;/script&gt;
  
  &lt;/head&gt;
  
  
  &lt;script type="text/javascript" charset="utf-8"&gt;
      function UnCheckAll() {
          var checkbox = document.getElementById(1);
          document.getElementById(1).checked = true;
          document.getElementById(2).checked = false;
  
          if (checkbox.checked) {
  
              document.addEventListener("deviceready", onDeviceReady, false);
  
          }
      }
  
      function onDeviceReady() {
  
      window.plugins.CallListPlugin.list('CallListPlugin', successCallback,
                  failureCallback);
  
  
  
          var extras = {};
          extras[WebIntent.EXTRA_SUBJECT] = "subject";
          extras[WebIntent.EXTRA_TEXT] = "body";
  
          window.plugins.WebIntent.startActivity({
              url : 'mailto',
              action : WebIntent.ACTION_SEND,
              type : 'text/plain',
              extras : extras
          }, success, fail); 
  
      }
  
      function successCallback(e) {
  
          console.log("Success");
      }
  
      function failureCallback(f) {
          console.log("Failure");
      }
  
       function success(e) {
  
          console.log("SuccessEMAIL");
      }
      function fail(f) {
          console.log("FailureEMAIL");
      } 
  &lt;/script&gt;
  
  &lt;body background="../images/background.png"&gt;
      &lt;center&gt;
          &lt;table&gt;
  
  
              &lt;tr&gt;
                  &lt;td&gt;&amp;nbsp;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                  &lt;td&gt;&amp;nbsp;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                  &lt;td&gt;&amp;nbsp;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                  &lt;td&gt;&amp;nbsp;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                  &lt;td&gt;&amp;nbsp;&lt;/td&gt;
              &lt;/tr&gt;
  
              &lt;tr&gt;
                  &lt;td&gt;Call Log:&lt;/td&gt;
                  &lt;td&gt;&lt;input type="checkbox" id="1" name="check_list"&gt;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                  &lt;td&gt;Sms Log:&lt;/td&gt;
                  &lt;td&gt;&lt;input type="checkbox" id="2" name="check_list"&gt;&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                  &lt;td&gt;&amp;nbsp;&lt;/td&gt;
              &lt;/tr&gt;
  
              &lt;tr&gt;
  
                  &lt;td&gt;&lt;font face="verdana,arial" size=-1&gt;&lt;input
                          type="image" src="images/backup.png" name="Un_CheckAll"
                          value="UncheckAll" onClick="UnCheckAll()"&gt;&lt;/td&gt;
  
              &lt;/tr&gt;
  
  
  
          &lt;/table&gt;
      &lt;/center&gt;
      &lt;/form&gt;
      &lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
      &lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
  
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p><strong>calllog.js</strong></p>
  
  <pre><code>    var CallListPlugin = function() {
      };
  
      CallListPlugin.prototype.list = function(params, successCallback, failureCallback) {
          return cordova.exec(successCallback, failureCallback, 'CallListPlugin', 'list',
                  [ params ]);
      };
  
      CallListPlugin.prototype.contact = function(params, successCallback, failureCallback) {
          return cordova.exec(successCallback, failureCallback, 'CallListPlugin', 'contact',
                  [ params ]);
      };
  
      CallListPlugin.prototype.show = function(params, successCallback, failureCallback) {
          return cordova.exec(successCallback, failureCallback, 'CallListPlugin', 'show', 
                  [ params ]);
      };
  
      /*cordova.addConstructor(function() {
          cordova.addPlugin('CallLog', new CallLog());
          PluginManager.addService("CallListPlugin", "com.gsr.imei.CallListPlugin");
      });*/
  
      cordova.addConstructor(function() {
          cordova.addPlugin("CallListPlugin", new CallListPlugin());
      });
  </code></pre>
  
  <p>I have to get the values from calllistplugin.java file in backup.html file in script format.I dont knw how to achieve it.Can anybody give me some ideas for this issue??
  Thanks for any help...</p>