PDA

View Full Version : دسترسی به call log



hamedjj
یک شنبه 12 آبان 1392, 11:09 صبح
سلام
من یه دکمه و یک فیلد متنی درون برنامه ام قرار دادم.
می خوام با کلیک بر روی دکمه به قسمت لیست تماس گوشی برود و با کلیک بر روی شماره مورد نظر آن شما را را دریافت کند و به برنامه برگردد و درون یک فیلد متن قرار دهد.

تو stackoverflow گشتم یه چیزایی بود ولی نتونستم ازشون استفاده کنم (شاید بخاطر اینکه انگلیسی بود متوجه نشدم)
حالا شما برنامه نویس های عزیز لطف کنید من را راهنمایی کنید
قربون همتون
منتظر پاسختون هستم

ghader62
یک شنبه 12 آبان 1392, 13:26 عصر
سلام
در قسمت onclicklistener کد زیرو وارد کن
Intent localIntent1 = new Intent("android.intent.action.PICK", ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(localIntent1, PICK_CONTACT);
در قسمت onActivityResult هم
switch (requestCode) {
case PICK_CONTACT: {
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String id = c.getString(c.getColumnIndexOrThrow(ContactsContra ct.Contacts._ID));
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Cont acts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getContentResolver().query(ContactsContract.Common DataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null);
phones.moveToFirst();
String cName = phones.getString(phones.getColumnIndex(ContactsCon tract.CommonDataKinds.Phone.DISPLAY_NAME));
String cNumber = phones.getString(phones.getColumnIndex(ContactsCon tract.CommonDataKinds.Phone.NUMBER));

edit_name.setText(cName);
edit_number.setText(cNumber);
}
}
}
}}
در منیفست برنامه هم اینو بزار
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

ghader62
یک شنبه 12 آبان 1392, 13:32 عصر
ببخشید من فکر کردم از لیست contact ها میخوای شماره و نام رو برداری
حواسم به call log نبود معذرت

hamedjj
یک شنبه 12 آبان 1392, 19:10 عصر
خواهش می کنم
ممنون از پاسختون
من کد بالا را داشتم و بجای intent اول که به مخاطبین میرفت لیست تماس ها را قرار دادم اما قبول نکرد
هر کاری کردم نشد
بخاطر همین اینجا سوالام را مطرح کردم
فقط این call log را یک نفر کدش را بزاره که خیلی اذیتم کرده
تو stackoverflow یکی همین سوال را پرسید اما جوابی براش نذاشتن
اگه دوباره لینکشو پیدا کردم براتون میزارم که اگه خواستین به اون هم جواب بدین
منتظرم

adlin2000
دوشنبه 13 آبان 1392, 08:22 صبح
ببینید این لینک ها کمکی میکنن :
http://stackoverflow.com/questions/6786666/how-do-i-access-call-log-for-android
http://stackoverflow.com/questions/10970732/how-make-call-log-app-in-android
http://malsandroid.blogspot.com/2010/06/accessing-call-logs.html

hamedjj
دوشنبه 13 آبان 1392, 12:38 عصر
ممنون از پاسختون
من به لینک هایی که قرار دادین مراجعه کردم
البته قبلا هم تمام این لینک ها را بررسی کردن و با کد ها بازی کردم تا بتونم کد خودم را درست کنم اما نتونستم
حتما از ضعف من در اندروید می باشد چون این مطالب توضیحات خوبی راجع به Call log میده
چیزی که من میخوام اینه که با کلیک بر روی دکمه وارد call log بشه و سپس با کلیک روی شماره ای آن شمره را درون یک editbox قرار بده
اگه کسی میتونه این کد را برام بفرسته واقعا ممنون میشم

hamedjj
دوشنبه 13 آبان 1392, 19:33 عصر
ای بابا مثل اینکه این مشکل حل بشو نیست
اون وقتی که تو رویاهات داری چشماتو میمالی
ولش کن بابا بذار یه بار هم دنیا ببره
.
.
.
چه فاز سنگینی:ناراحت:

hamedjj
سه شنبه 14 آبان 1392, 00:51 صبح
آخرش خودم جوابشو پیدا کردم
main :

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class CallLog extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnPick = (Button) findViewById(R.id.btnPick);
btnPick.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
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);

AlertDialog.Builder builder = new AlertDialog.Builder(
CallLog.this);
builder.setTitle("Select recent contact");
android.content.DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface,
int item) {
cursorCall.moveToPosition(item);

EditText editText = (EditText)findViewById(R.id.editText1);
editText.setText(cursorCall.getString(cursorCall.g etColumnIndex(android.provider.CallLog.Calls.NUMBE R)));
return;
}
};
builder.setCursor(cursorCall, listener,
android.provider.CallLog.Calls.NUMBER);
builder.create().show();
}
});
}
}

XML :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/btnPick"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="phone" >

<requestFocus />
</EditText>

</LinearLayout>

manifest :

<uses-permission android:name="android.permission.READ_CALL_LOG" />

این برنامه شماره های لیست تماس را به صورت Alertdialog درمیاره و با تب بر روی شماره مورد نظر آن را وارد edittext میکنه