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 :
<?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>
<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
Enregistrer un commentaire
Your comment will be reviewed by moderators