2013-01-24 5 views
2

Est-il possible d'obtenir les statistiques Android des appels, sms et chats liés à un contact spécifique? Cette statistique est-elle stockée quelque part? Sinon, existe-t-il une méthode pour obtenir et stocker ces statistiques en utilisant Android SDK? Utiliser Android NDK? Est-ce que le système Android permet d'accrocher un événement SMS et Chats en quelque sorte?Statistiques des appels Android

+0

Comment accéder aux données de discussion pour un contact? utilisant l'identifiant gmail du contact? Pour les SMS et les journaux d'appels, vous pouvez vous référer à cette bibliothèque [callmeter] (https://github.com/felixb/callmeter). – Supreethks

+0

Je n'accède pas aux données de discussion pour le moment. Comment puis-je le faire? Pour l'instant je n'ai qu'un ID de chat de la base de données Contacts. – Catherine

+0

pour un contact particulier, vous devez déclencher une requête dans le résolveur de contenu pour le texte et les appels. – Jambaaz

Répondre

1

1. pour les appels entrants et sortants, vous pouvez le collecter manuellement via BroadCastReceivers.

Manifest:

<receiver android:name="IncomingCallReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 
<receiver android:name="OutgoingCallReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 

BroacastReceivers:

public class IncomingCallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle extras = intent.getExtras(); 
     if(extras == null) 
      return; 

     String callState = extras.getString(TelephonyManager.EXTRA_STATE); 

     // ringing state 
     if(callState.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)){ 
      String incomingNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Toast.makeText(context,"Incoming number: " + incomingNumber,Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

public class OutgoingCallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle extras = intent.getExtras(); 
     if(extras == null) 
      return; 
     // caller 
     String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

     // Toast megjelenitese 
     Toast.makeText(context,"Outgoing number: "+phoneNumber, Toast.LENGTH_LONG).show(); 
    } 
} 

2. Vous pouvez également créer un curseur au journal des appels et une fois que vous pouvez parcourir ce curseur.

String[] strFields = { android.provider.CallLog.Calls._ID, 
     android.provider.CallLog.Calls.NUMBER, 
     android.provider.CallLog.Calls.CACHED_NAME}; 
String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
final Cursor cursorCall = getContentResolver().query(
     android.provider.CallLog.Calls.CONTENT_URI, strFields, 
     null, null, strOrder); 

3. Pour SMS, vous pouvez également créer BroadcastReceivers, ou vous pouvez également créer un ContentObserver au contenu spécifique. Peut-être que le chat est enregistré dans un emplacement auquel vous pouvez connecter un ContentObserver.