मैं अनुसंधान के एक बिट किया है और सफलतापूर्वक जो 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 में संख्या, इंडेक्स 2 में टाइप करें, इंडेक्स 3 में अवधि, इंडेक्स 4 में नया, इंडेक्स 5 में कैश किया गया नाम, इंडेक्स 6 में कैश किए गए नंबर टाइप, इंडेक्स 7 में कैश नंबर लेबल। यह पहले ही सूचीबद्ध है या आप चेक कर सकते हैं http://developer.android.com/reference/android/provider/CallLog.Calls.html – sudipto
सुडिपो, आपके उत्तर के लिए धन्यवाद। यदि मैं strFields के लिए शून्य निर्दिष्ट करता हूं तो यह सब_आईडी के साथ लौट रहा है, लेकिन अवधि नहीं है, और यदि मैं उपरोक्त सरणी में अतिरिक्त फ़ील्ड के रूप में sub_id पास करता हूं, तो यह मुझे कोई आउटपुट नहीं दे रहा है, मुझे अवधि और सब_आईडी दोनों की आवश्यकता है, कृपया मेरी मदद करें .. –