Tuto android : code pour accéder au journal des appels sur android

Comment accéder au journal des appels pour Android?

Pour accéder à l'historique des appels et afficher cet historique dans une liste (ListView) :



vous avez besoin d'ajouter la permission suivante dans votre fichier Manifest :


    
Par la suite il faut développer le code XML du layout principal qui contient la ListView et le fichier qui représente la forme de l'item de la liste : l'interface de base contient la liste qui va afficher l'historique des appels (Le nom du contact,le numéro et la durée de l'appel).
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.lahiani.houssem.callog.MainActivity">
<ListView android:id="@+id/liste" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="13dp" />
</RelativeLayout>


 Le layout qui représente la forme de l'item de la liste contiendra : 



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"   
 android:orientation="vertical"  
  android:layout_width="match_parent"    
android:layout_height="match_parent">
    <TextView      
  android:text="TextView"      
  android:layout_width="wrap_content"       
 android:layout_height="wrap_content"       
 android:id="@+id/nom"         />
    <TextView        
android:text="TextView"       
 android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:id="@+id/num"         />
    <TextView        
android:text="TextView"        
android:layout_width="match_parent"        
android:layout_height="wrap_content"        
android:id="@+id/dure" />
</LinearLayout>

Il reste maintenant le code Java : 




import android.database.Cursor;
import android.net.Uri;
import android.provider.CallLog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class MainActivity extends AppCompatActivity {
ListView liste;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        liste=(ListView)findViewById(R.id.liste);

        Uri allCalls = Uri.parse("content://call_log/calls");
        Cursor c = managedQuery(allCalls, null, null, null, null);
        SimpleCursorAdapter adapter=new SimpleCursorAdapter(MainActivity.this,R.layout.item,c,
                new String[]{c.getColumnName(c.getColumnIndex(CallLog.Calls.CACHED_NAME)),
                        c.getColumnName(c.getColumnIndex(CallLog.Calls.NUMBER)),
                        c.getColumnName(c.getColumnIndex(CallLog.Calls.DURATION))},
                new int[]{R.id.nom,R.id.num,R.id.dure});
        liste.setAdapter(adapter);
 /*       String num= c.getString(c.getColumnIndex(CallLog.Calls.NUMBER));// for  number
        String name= c.getString(c.getColumnIndex(CallLog.Calls.CACHED_NAME));// for name
        String duration = c.getString(c.getColumnIndex(CallLog.Calls.DURATION));// for duration
        int type = Integer.parseInt(c.getString(c.getColumnIndex(CallLog.Calls.TYPE)));// for call type, Incoming or out going. */
    }
}

En cas ou vous allez tester l'application sur la version Marshmallow ou plus, vous devez activer la permission pour votre application après son installation sur le device sinon elle va cracher.Il faut aller dans paramètres du téléphone ==> Confidentialité ==>autorisations Applications ==>Telephone et puis activer la permission pour votre application récemment installée.

Commentaires

Posts les plus consultés de ce blog

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json

Connexion d'une application Android et une base de données externe Mysql avec web services php Json (opérations CRUD)