آموزش خواندن تاریخچه تماس (Call History) در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش خواندن تاریخچه تماس (Call History) در اندروید خواهیم پرداخت شاید لازم باشد تماس هایی که کاربر دریافت می کند را را به دست بیاریم هر تماس یا تاریخچه تماس به سه بخشه OUTGOING یا (تماس های خروجی) , INCOMING (تماس های ورودی) و MISSED (تماس های از دسته) تقسیم می شوند و ما در این آموزش پس از دریافت تاریخچه های تماس آنها را در یک TextView قرار میدهیم در ادامه با ما همراه باشید.
در ابتدای کار وارد فایل AndroidManifest.xml شده و دسترسی زیر را اضافه کنید.
1 | <android:name="android.permission.READ_CALL_LOG"/> |
سپس در layout اصلی خود که در اینجا نام آن برابر با activity_main.xml است کد زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textview_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> </ScrollView> </RelativeLayout> |
در بالا یک ScrollView و یک TextView قرار گرفته است.
سپس وارد اکتیویتی خود شده که در اینجا نام آن برابر با MainActivity.java است و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package com.manish.callhistory; import java.util.Date; import com.manish.callhistory.R; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.provider.CallLog; import android.widget.TextView; public class MainActivity extends Activity { TextView textView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textview_call); getCallDetails(); } private void getCallDetails() { StringBuffer sb = new StringBuffer(); Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, null); int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); sb.append("Call Log :"); while (managedCursor.moveToNext()) { String phNumber = managedCursor.getString(number); String callType = managedCursor.getString(type); String callDate = managedCursor.getString(date); Date callDayTime = new Date(Long.valueOf(callDate)); String callDuration = managedCursor.getString(duration); String dir = null; int dircode = Integer.parseInt(callType); switch (dircode) { case CallLog.Calls.OUTGOING_TYPE: dir = "OUTGOING"; break; case CallLog.Calls.INCOMING_TYPE: dir = "INCOMING"; break; case CallLog.Calls.MISSED_TYPE: dir = "MISSED"; break; } sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration); sb.append("\n----------------------------------"); } //managedCursor.close(); textView.setText(sb); } } |
در بالا بعد از دریافت بر اساس نوع فیلتر شده و در TextView قرار خواهد گرفت در بالا یک بخش کامنت شده است بهتر است کامنت آن را بردارید ولی ممکن است در api زیر 2.2 به مشکل بخورید .
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام
برای اینکه فقط تماس های که از طرف بانک میایید رو دریافت کنیم چکار باید بکنیم ؟
سلام در صورتی که تماسی که از بانک می آید از شماره خاصی باشد می تونید مثل زیر عمل کنید.
موفق باشید.