For anyone that comes across this it is possible to do using the call log
content provider, you simply use the read and write contacts permission and
write to the CallLog.Calls.CONTENT_URI.

On Wed, Dec 16, 2009 at 3:27 PM, Donal Rafferty <[email protected]> wrote:

> I have come across this in the source
>
> ublic static Uri addCall(CallerInfo ci, Context context, String number,
>>                 int presentation, int callType, long start, int duration)
>> {
>>             final ContentResolver resolver = context.getContentResolver();
>>
>>             // If this is a private number then set the number to Private,
>> otherwise check
>>             // if the number field is empty and set the number to
>> Unavailable
>>             if (presentation == Connection.PRESENTATION_RESTRICTED) {
>>                 number = CallerInfo.PRIVATE_NUMBER;
>>                 if (ci != null) ci.name = "";
>>             } else if (presentation == Connection.PRESENTATION_PAYPHONE) {
>>                 number = CallerInfo.PAYPHONE_NUMBER;
>>                 if (ci != null) ci.name = "";
>>             } else if (TextUtils.isEmpty(number)
>>                     || presentation == Connection.PRESENTATION_UNKNOWN) {
>>                 number = CallerInfo.UNKNOWN_NUMBER;
>>                 if (ci != null) ci.name = "";
>>             }
>>
>>             ContentValues values = new ContentValues(5);
>>
>>             values.put(NUMBER, number);
>>             values.put(TYPE, Integer.valueOf(callType));
>>             values.put(DATE, Long.valueOf(start));
>>             values.put(DURATION, Long.valueOf(duration));
>>             values.put(NEW, Integer.valueOf(1));
>>             if (ci != null) {
>>                 values.put(CACHED_NAME, ci.name);
>>                 values.put(CACHED_NUMBER_TYPE, ci.numberType);
>>                 values.put(CACHED_NUMBER_LABEL, ci.numberLabel);
>>             }
>>
>>             if ((ci != null) && (ci.person_id > 0)) {
>>                 ContactsContract.Contacts.markAsContacted(resolver,
>> ci.person_id);
>>             }
>>
>>             Uri result = resolver.insert(CONTENT_URI, values);
>>
>>             removeExpiredEntries(context);
>>
>>             return result;
>>         }
>>
>
> Could I use this in some way and how do I go about it?
>
> Thanks,
>
> Donal
>
> On Wed, Dec 16, 2009 at 11:02 AM, Donal Rafferty <[email protected]>wrote:
>
>> Hi Kumar,
>>
>> The idea is to show calls made over wi fi or 3G from another application
>> in the Call Log as if they were made over GSM.
>>
>> You reckon looking at the source will be the only way?
>>
>> Thanks,
>>
>> Donal
>>
>>
>> On Wed, Dec 16, 2009 at 10:33 AM, Kumar Bibek <[email protected]>wrote:
>>
>>> Hi Donal,
>>>
>>> This is as good as hacking. I guess, adding a new call log should not
>>> be possible. However, deleting them should be possible by using the
>>> Content Provider.
>>>
>>> You need to re-read the documentations, or may be look at the source
>>> codes.
>>>
>>> Kumar Bibek
>>> http://tech-droid.blogspot.com
>>>
>>> On Dec 15, 5:57 pm, Donal Rafferty <[email protected]> wrote:
>>> > Here is the code I have
>>> >
>>> > import android.app.Activity;
>>> >
>>> >
>>> >
>>> > > import android.content.ContentUris;
>>> > > import android.content.ContentValues;
>>> > > import android.content.Context;
>>> > > import android.database.Cursor;
>>> > > import android.net.Uri;
>>> > > import android.os.Bundle;
>>> > > import android.provider.CallLog;
>>> > > import android.util.Log;
>>> > > import android.widget.SimpleCursorAdapter;
>>> >
>>> > > public class test extends Activity {
>>> > >     /** Called when the activity is first created. */
>>> > >     @Override
>>> > >     public void onCreate(Bundle savedInstanceState) {
>>> > >         super.onCreate(savedInstanceState);
>>> > >         setContentView(R.layout.main);
>>> >
>>> > >         Uri myCall =
>>> ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI,
>>> > > 0);
>>> >
>>> > >         Cursor cur = managedQuery(myCall, null, null, null, null);
>>> >
>>> > >         String[] projection = new String[] {
>>> > >                 CallLog.Calls.CACHED_NAME,
>>> > >                 CallLog.Calls.CACHED_NUMBER_LABEL,
>>> > >                 CallLog.Calls.DURATION
>>> > >              };
>>> >
>>> > >         Uri myCalls = CallLog.Calls.CONTENT_URI;
>>> >
>>> > >         Cursor managedCursor = managedQuery(myCalls,
>>> > >                 projection, // Which columns to return
>>> > >                 null,       // Which rows to return (all rows)
>>> > >                 null,       // Selection arguments (none)
>>> > >                 // Put the results in ascending order by name
>>> > >                 CallLog.Calls.DATE + " ASC");
>>> > >         this.addToCallLog();
>>> > >         this.getColumnData(managedCursor);
>>> > >     }
>>> >
>>> > >     private void getColumnData(Cursor cur){
>>> > >         if (cur.moveToFirst()) {
>>> >
>>> > >             String name;
>>> > >             String phoneNumber;
>>> > >             String duration;
>>> > >             int nameColumn =
>>> cur.getColumnIndex(CallLog.Calls.CACHED_NAME);
>>> > >             int phoneColumn =
>>> > > cur.getColumnIndex(CallLog.Calls.CACHED_NUMBER_LABEL);
>>> > >             int durationColumn =
>>> > > cur.getColumnIndex(CallLog.Calls.DURATION);
>>> > >             String imagePath;
>>> >
>>> > >             do {
>>> > >                 // Get the field values
>>> > >                 name = cur.getString(nameColumn);
>>> > >                 phoneNumber = cur.getString(phoneColumn);
>>> > >                 duration = cur.getString(durationColumn);
>>> >
>>> > >                //Log.i("NAMES !!!!! = ", name);
>>> > >                // Log.i("Number !!!!! = ", phoneNumber);
>>> > >                 Log.i("duration !!!!! = ", duration);
>>> >
>>> > >             } while (cur.moveToNext());
>>> >
>>> > >         }
>>> >
>>> > >     }
>>> >
>>> > >     private void addToCallLog(){
>>> >
>>> > >         ContentValues values = new ContentValues();
>>> >
>>> > >         // Add Abraham Lincoln to Calls List;
>>> > >         values.put(CallLog.Calls.CACHED_NAME, "Abraham Lincoln2");
>>> > >         //values.put(CallLog.Calls.CACHED_NUMBER_LABEL,
>>> "0863497543");
>>> > >         values.put(CallLog.Calls.DURATION, 102);
>>> >
>>> > >         Uri uri =
>>> getContentResolver().insert(CallLog.Calls.CONTENT_URI,
>>> > > values);
>>> >
>>> > >     }
>>> >
>>> > > }
>>> >
>>> > This works in that the logcat shows that its adding the duration,
>>> however
>>> > problems include:
>>> >
>>> > Not getting the phonenumber, this gives a uncaughtexception error
>>> >
>>> > And the emulator crashes the Call Log app thats already on the device
>>> when
>>> > it is used after my app has run
>>> >
>>> > On Tue, Dec 15, 2009 at 12:22 PM, [email protected] <[email protected]
>>> >wrote:
>>> >
>>> > > Hi,
>>> >
>>> > > I have been looking at Androids call log content provider and have
>>> > > managed to pull the data from it and display it in my own app.
>>> >
>>> > > However I want to be able to write to the call log, is there anyway
>>> of
>>> > > doing this?
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Android Developers" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]<android-developers%[email protected]>
>>> For more options, visit this group at
>>> http://groups.google.com/group/android-developers?hl=en
>>
>>
>>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to