2011-06-08 15 views
8

मैंने अभी फोन गैप और एंड्रॉइड के साथ शुरुआत की है। बुनियादी नमूने बनाया गया।फोनगैप एपीआई कॉल-लॉग पूछने के लिए

मैं जानना चाहता हूं कि कॉल लॉग प्राप्त करने के लिए कोई एपीआई है या नहीं। मैं एक ग्रिड दिखा बनाना चाहते हैं:

  • मिस्ड कॉल्स की संख्या समय की अवधि में
  • प्राप्त कॉल और कॉल
  • कॉल की संख्या बनाया
  • प्राप्त कॉल की कुल समय की संख्या
  • बनाया

अग्रिम धन्यवाद।

उत्तर

24

मैं अनुसंधान के एक बिट किया है और सफलतापूर्वक जो android.provider.CallLog से CallLog लाने होगा एक PhoneGap प्लगइन का निर्माण किया है:

यहाँ कैसे एक phonegap प्लगइन लिखने के लिए पर एक कड़ी है।

यह एक JSON { Rows: [] } जहां Rows निम्नलिखित क्षेत्रों युक्त कॉल रिकॉर्ड की एक 2 आयामी सरणी है रिटर्न (सरणी के रूप में) को निम्न क्रम में:

  • की तारीख (के रूप में यूनिक्स समय स्टांप)
  • संख्या,
  • प्रकार (1- भेजे, 2- निवर्तमान, 3- याद किया)
  • अवधि (सेकंड में)
  • नई
  • कैश्ड नाम
  • कैश्ड संख्या प्रकार
  • कैश्ड संख्या लेबल

विवरण में http://developer.android.com/reference/android/provider/CallLog.Calls.html

मैं भी इस प्लगइन जो आउटगोइंग कॉल की कुल संख्या में दिखाई देगा का उपयोग कर एक छोटा सा नमूना बना दिया है, याद किया कॉल और इनकमिंग कॉल और उन्हें पाई चार्ट में प्लॉट करें। नमूना FusionCharts 'पाई चार्ट का उपयोग कर रहा है।

आप बीटा ट्राई-आउट डाउनलोड कर सकते हैं।apk से:

http://www.sudipto.net/download/android/apps/CallLog/beta/calllog_phonegap_eclipseclassic_source.zip

:

http://www.sudipto.net/download/android/apps/CallLog/beta/CallChart.apk.zip

यहाँ (जावास्क्रिप्ट एसवीजी चार्ट है कि ऊपर Android संस्करण 3 या में काम करता है का उपयोग करके) स्रोत-कोड जिप आप में तल्लीन करने के लिए है

मेरा पूरा कोड यहां है:

CallLog.java

package com.fusioncharts.phonegap.plugin; 

import org.json.*; 

import android.database.*; 
import android.util.Log; 

import com.phonegap.api.Plugin; 
import com.phonegap.api.PluginResult; 
import com.phonegap.api.PluginResult.Status; 

public class CallLog extends Plugin { 

     @Override 
     public PluginResult execute(String actionName, JSONArray arguments, String callback) 
     { 


       JSONObject callLogs = new JSONObject(); 
       PluginResult result = null; 


       try { 
         switch (getActionItem(actionName)) 
         { 
           case 1: 
             callLogs = getAllCallLog(arguments); 
             result = new PluginResult(Status.OK, callLogs); 
             break; 
           default: 
             result = new PluginResult(Status.INVALID_ACTION); 
         } 
       } catch (JSONException jsonEx) { 
         result = new PluginResult(Status.JSON_EXCEPTION); 
       } 



       return result; 
     } 


     private JSONObject getAllCallLog(JSONArray requirements) 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, 
           null, 
           null, 
           android.provider.CallLog.Calls.DEFAULT_SORT_ORDER 
          ); 



       int callCount = callLogCursor.getCount(); 

       if(callCount>0){ 
         JSONArray callLogItem = new JSONArray(); 
         JSONArray callLogItems = new JSONArray(); 

         String[] columnNames = callLogCursor.getColumnNames(); 

         callLogCursor.moveToFirst(); 
         do 
         { 
           callLogItem.put(callLogCursor.getLong(0)); 
           callLogItem.put(callLogCursor.getString(1)); 
           callLogItem.put(callLogCursor.getInt(2)); 
           callLogItem.put(callLogCursor.getLong(3)); 
           callLogItem.put(callLogCursor.getInt(4)); 
           callLogItem.put(callLogCursor.getString(5)); 
           callLogItem.put(callLogCursor.getInt(6)); 
           callLogItems.put(callLogItem); 
           callLogItem = new JSONArray(); 

         }while(callLogCursor.moveToNext()); 

         callLog.put("Rows", callLogItems); 
       } 


       callLogCursor.close(); 
       }catch(Exception e) 
       { 

         Log.d("CallLog_Plugin", " ERROR : SQL to get cursor: ERROR " + e.getMessage()); 
       } 



       return callLog; 
     } 

     private JSONObject getTimeRangeCallLog(JSONArray requirements) 
     { 

     private int getActionItem(String actionName) throws JSONException 
     { 
       JSONObject actions = new JSONObject("{'all':1,'last':2,'time':3}"); 
       if (actions.has(actionName)) 
         return actions.getInt(actionName); 

       return 0; 
     } 
} 

calllog.phonegap.js

var CallLog = function() {}; 
    CallLog.prototype.all = function(params, successCallback, failureCallback) 
    { 
     return PhoneGap.exec(successCallback, failureCallback, 'CallLog', 'all', [params]); 
    }; 

    PhoneGap.addConstructor(function() { 
      PhoneGap.addPlugin("calllog", new CallLog()); 
      PluginManager.addService("CallLog","com.fusioncharts.phonegap.plugin.CallLog"); 
    }); 

Application.java

var CallLog = function() {}; 
CallLog.prototype.all = function(params, successCallback, failureCallback) 
{ 
    /* @param successCallback 
    * @param failureCallback 
    * @param plugin name 
    * @param action 
    * @param JSONArray of parameters 
    */ 
    return PhoneGap.exec(successCallback, failureCallback, 'CallLog', 'all', [params]); 
}; 

PhoneGap.addConstructor(function() { 
     //Register the javascript plugin with PhoneGap 
     PhoneGap.addPlugin("calllog", new CallLog()); 

     //Register the native class of plugin with PhoneGap 
     PluginManager.addService("CallLog","com.fusioncharts.phonegap.plugin.CallLog"); 
}); 
+0

इस महत्वपूर्ण उत्तर के लिए धन्यवाद, आपकी जे एस फ़ंक्शन सरणी के सरणी, आप कृपया बच्चे सरणी की सामग्री क्या हैं बता देगा ?? –

+1

जेएसओएन {पंक्तियों: []} के रूप में आता है। आपको पंक्तियों की सरणी की बात करनी होगी। पंक्तियां सभी कॉललॉग प्रविष्टियों का एक अनुक्रमित सरणी है, इसलिए इसकी एक सरणी - एक पंक्ति एक प्रविष्टि है। प्रत्येक प्रविष्टि एक अनुक्रमित सरणी है जहां प्रविष्टि के लिए कॉललॉग डेटा संग्रहीत किया जाता है। आदेश सूचकांक 0 में दिनांक है; इंडेक्स 1 में संख्या, इंडेक्स 2 में टाइप करें, इंडेक्स 3 में अवधि, इंडेक्स 4 में नया, इंडेक्स 5 में कैश किया गया नाम, इंडेक्स 6 में कैश किए गए नंबर टाइप, इंडेक्स 7 में कैश नंबर लेबल। यह पहले ही सूचीबद्ध है या आप चेक कर सकते हैं http://developer.android.com/reference/android/provider/CallLog.Calls.html – sudipto

+0

सुडिपो, आपके उत्तर के लिए धन्यवाद। यदि मैं strFields के लिए शून्य निर्दिष्ट करता हूं तो यह सब_आईडी के साथ लौट रहा है, लेकिन अवधि नहीं है, और यदि मैं उपरोक्त सरणी में अतिरिक्त फ़ील्ड के रूप में sub_id पास करता हूं, तो यह मुझे कोई आउटपुट नहीं दे रहा है, मुझे अवधि और सब_आईडी दोनों की आवश्यकता है, कृपया मेरी मदद करें .. –

4

आप जो करना चाहते हैं उसे हासिल करने के लिए फोनगैप में कोई मानक एपीआई नहीं है, लेकिन आप हमेशा अपने मंच के लिए एक प्लगइन लिख सकते हैं और एंड्रॉइड एपीआई से जानकारी प्राप्त कर सकते हैं। (मुझे वास्तव में पता नहीं है कि क्या आपको एंड्रॉइड पर जावा के साथ आवश्यक जानकारी मिल सकती है)। http://wiki.phonegap.com/w/page/36752779/PhoneGap-Plugins