Сохранение сведений о входящих и исходящих вызовах на сервере (Android)

Я хочу автоматически сохранять входящий и исходящий вызов на сервере. Мне нужен написанный код, но иногда он работает, а иногда мое приложение падает. Может ли кто-нибудь помочь мне решить эту проблему. Ниже мой код CallReceiver.java:

public class MyCallReceiver extends BroadcastReceiver {

Context context;
String currentDateTimeString;
String state;
String number;

@Override
public void onReceive(Context context, Intent intent) {


    //this.context = context;
    state=intent.getStringExtra(TelephonyManager.EXTRA_STATE);

    if(state==null){
        //outgoing call
        number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        Log.i("tag", "Outgoing number : " +number);
        currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
        Log.i("tag", "Date :" + currentDateTimeString);
        doSaveCallRecord(1);


    }
    else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
    {
        //incoming call
        number=intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
        Log.i("tag","Incoming number : "+number);
        currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
        Log.i("tag", "Date :" + currentDateTimeString);
        doSaveCallRecord(0);
    }
}

public static String getContactName(Context context,String phoneNumber){
    ContentResolver cr = context.getContentResolver();
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Cursor cursor = cr.query(uri, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);
    if (cursor == null) {
        return null;
    }
    String contactName = null;
    if(cursor.moveToFirst()) {
        contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));

        Toast.makeText(context,"Name :"+contactName,Toast.LENGTH_LONG).show();
    }

    if(cursor != null && !cursor.isClosed()) {
        cursor.close();
    }
    return contactName;
}

person Pratik Sule    schedule 16.10.2015    source источник
comment
где вы получаете ошибку?... и какая ошибка? выложи лог кот.   -  person SRB Bans    schedule 16.10.2015
comment
Я изменил код сейчас. Теперь я получаю исходящий номер и входящий, но теперь проблема в том, что я получаю номер 2-3 раза.   -  person Pratik Sule    schedule 16.10.2015
comment
взгляните на это... [stackoverflow.com/a/8413512/3790052]   -  person SRB Bans    schedule 16.10.2015
comment
и это.. [stackoverflow.com/a/11031249/3790052]   -  person SRB Bans    schedule 16.10.2015
comment
Должен ли я писать свой код обнаружения входящего вызова в if (activeNetInfo != null) { if(firstConnect) { // здесь делаем подпрограммы firstConnect = false; }   -  person Pratik Sule    schedule 16.10.2015
comment
сначала попробуйте запустить на других устройствах... чтобы проверить, действительно ли это проблема.   -  person SRB Bans    schedule 16.10.2015