hi megha,
thanks for all your help - just one little problem and its done.
the cursor seems to be working now - BUT the last thing is that i need
to send data to my service and i dont seem to have conquered that
although i have tried various things. i guess i dont understand
it....
here is the code for the intent receiver that calls the service, and
the service
package org.apache.android.mailContactsOften;
import android.content.Context;
import android.content.Intent;
import android.content.IntentReceiver;
import android.os.Bundle;
public class EmailContactsRepeat extends IntentReceiver
{
@Override
public void onReceiveIntent(Context context, Intent intent)
{
//get bundle of extras (userid, passwork, email) from intent
String userid = intent.getStringExtra("userid");
String password = intent.getStringExtra("password");
String email = intent.getStringExtra("email");
int foo=0;
int rbutton = intent.getIntExtra("rbutton", foo);
String body = intent.getStringExtra("body");
//context.startService(new Intent(context, GetContacts.class),
// null);
Intent conintent = new Intent(context, GetContacts.class);
//bundle data for conintent
// bundle extras (data) with the intent.
//conintent.putExtra("userid", userid);
//conintent.putExtra("password", password);
//conintent.putExtra("email", email);
//conintent.putExtra("body",body);
Bundle b= new Bundle();
b.putString("userid", userid);
b.putString("password", password);
b.putString("email", email);
b.putString("body",body);
context.startService(conintent,b);
}
}
here is the service
package org.apache.android.mailContactsOften;
import org.apache.android.mailContactsOften.GetContacts;
import android.app.Service;
import android.database.Cursor;
import android.os.Binder;
import android.os.IBinder;
import android.os.Parcel;
import android.content.Intent;
import android.os.Bundle;
public class GetContacts extends Service
{
String pList = "";
String st = "";
String userid ="";
String password="";
String email ="@gmail.com";
String body;
void onStart(Intent in, Bundle b)
{
userid = b.getString("userid");
password = b.getString("password");
email = b.getString("email");
body = b.getString("body");
}
@Override
protected void onCreate()
{
Thread thr = new Thread(null, mTask, "GetContacts");
thr.start();
}
/**
* The function that runs in our worker thread
*/
Runnable mTask = new Runnable() {
public void run()
{
// Normally we would do some work here...
// get the contact string and call send to send the info
body = getContactStr();
// send the data
SendContacts s = new SendContacts (body,userid, password,
email);
// Done with our work... stop the service!
GetContacts.this.stopSelf();
}
};
@Override
public IBinder onBind(Intent intent)
{
return mBinder;
}
/**
* This is the object that receives interactions from clients.
See RemoteService
* for a more complete example.
*/
private final IBinder mBinder = new Binder()
{
@Override
protected boolean onTransact(int code, Parcel data, Parcel
reply,
int flags) {
return super.onTransact(code, data, reply, flags);
}
};
public String getContactStr()
{
pList = "";
st = "";
Cursor c = getContentResolver().query(
android.provider.Contacts.Phones.CONTENT_URI,
null, null, null,
android.provider.Contacts.Phones.PERSON_ID+ " ASC");
//startManagingCursor(c);
// Retrieve the column-indixes of phoneNumber, name and type
int numberColumn =
c.getColumnIndex(android.provider.Contacts.Phones.NUMBER);
int nameColumn =
c.getColumnIndex(android.provider.Contacts.Phones.NAME);
// type can be: home, cell, etc (number provided - must be
interpreted
int typeColumn =
c.getColumnIndex(android.provider.Contacts.Phones.TYPE);
int labelColumn =
c.getColumnIndex(android.provider.Contacts.Phones.LABEL);
// Will hold the calls, available to the cursor
// Loop through all entries the cursor provides to us.
if(c.first()){
do{
String callerPhoneNumber = c.getString(numberColumn);
String pname = c.getString(nameColumn);
int pType = c.getInt(typeColumn);
String label = c.getString(labelColumn);
if (label != null)
st = label;
else
st = getPhoneType(pType);
pList = pList + "\n"+ pname + " "+ st + "\t # " +
callerPhoneNumber +" " ;
}while(c.next());
}
c.close();
if (pList == "")
return ("No Contacts in Cell Phone ");
else
return pList;
}
private String getPhoneType(int p)
{
String st = "";
switch(p)
{
case android.provider.Contacts.Phones.HOME_TYPE:
st = "Home";
break;
case android.provider.Contacts.Phones.HOME_FAX_TYPE:
st = "HomeFax";
break;
case android.provider.Contacts.Phones.MOBILE_TYPE:
st = "Cell";
break;
case android.provider.Contacts.Phones.WORK_TYPE:
st = "Work";
break;
case android.provider.Contacts.Phones.OTHER_TYPE:
st = "";
break;
case android.provider.Contacts.Phones.WORK_FAX_TYPE:
st = "WorkFax";
break;
case android.provider.Contacts.Phones.PAGER_TYPE:
st = "Pager";
break;
}
return st;
}
}
On Apr 14, 5:40 pm, "Megha Joshi" <[EMAIL PROTECTED]> wrote:
> Hi,
>
> This is because the startManagingCursor() method is not present in Service
> class, it can only be used for Activity.
>
> You don't need this method in service, you can simply use the cursor, and
> be careful about closing it with cursor.close() when you are done.
>
> Thanks,
> Megha
--~--~---------~--~----~------------~-------~--~----~
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]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---