Hi I'm developing an android application in which it will retrieve all the call log from the user mobile and store the data in SQLite database.Till here I have achieved but now I'm trying to send the data to my remote server for every 12 hours.I have created a service and a broadcast receiver but how to send the data to my remote server if the internet connection is detected?
This is my Service class
public class MyService extends Service {
String callNumber,deviceId;
int phoneType;
String possibleEmail;
Cursor c;
SQLiteDatabase db;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, " MyService Created ", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, " MyService Started", Toast.LENGTH_LONG).show();
getAllCallLogs();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
Toast.makeText(this, "Servics Stopped", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
private void getAllCallLogs(){
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
deviceId = tm.getDeviceId();
phoneType = tm.getPhoneType();
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
Cursor cur = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, strOrder);
// loop through cursor
while (cur.moveToNext()) {
callNumber = cur.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
String callName = cur
.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME));
String callDate = cur.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.DATE));
SimpleDateFormat formatter = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss");
String dateString = formatter.format(new Date(Long
.parseLong(callDate)));
String callType = cur.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.TYPE));
String type = null;
int type1 = Integer.parseInt(callType);
switch(type1){
case CallLog.Calls.OUTGOING_TYPE:
type = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
type = "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
type = "MISSED";
break;
}
String duration = cur.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.DURATION));
// process log data...
Toast.makeText(getApplicationContext(), ""+type, 5000).show();
db = this.openOrCreateDatabase("call_log", MODE_PRIVATE, null);
db.execSQL("insert into call_log(call_name,call_number,call_date,call_type,call_duration,device_id,user_name)values('"+callName+"','"+callNumber+"','"+dateString+"','"+type+"','"+duration+"','"+deviceId+"','"+possibleEmail+"')");
}
}
This is my Broadcast Receiver class
public class MyBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(isNetConnected(context)){
Toast.makeText(context, "Connected",5000).show();
}
else
{
Toast.makeText(context, "Not Connected", 5000).show();
}
}
public static boolean isNetConnected(Context context){
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}