بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

گرفتن لیست مخاطبین و شخصی سازی آن؟

مدیریت گفتگو
hvm 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان

من می خوام مخاطبین رو بگیرم، نام و شمارشون رو و شخصی سازیشون کنم، نمی خوام تو دیتابیس ذخیره کنم فقط می خوام روی یک دکمه که کلیک شد نام و شماره تمام مخاطبین رو به من بده تا من تو لیست نشون بدم.

: سوالاتی مشابه این قضیه شده ولی نمی خوام برم به صفحه مخاطبین می خوام همونجا تو یه دیالوگ نشون بدم.

نظرات

hvm 10 سال پیش
یاسر جان اتفاقا اینو دیده بودم، اما وقتی روی دکمه کلیک میکنم گوشی چند لحظه هنگ می کنه بعد می نویسه که برنامه پاسخ نمی دهد.
amirhossein1376 10 سال پیش
احتمالا همون مشکل همیشگی! رو اندروید 6 تست میکنید اپ رو ؟
Amir 10 سال پیش
احتمالا پرمیشن هم می خواد
hvm 10 سال پیش
درسته پرمیشن هم می خواد ولی با وجود پرمیشن بازم هنگ می کنه. بدون پرمیشن خطا می ده.
amirhossein1376 10 سال پیش
میگم که از اندروید 6 به بعد پرمیشن ها عوض شدن باید runtime بگیرین
hvm 10 سال پیش
آخه اندروید 6 ندارم!
hvm 10 سال پیش
همین کد پایینه اما شمام بی زحمت تست کنید تو یه باتتان بذارید کلیک کنید ببینید برنامه هنگ نمی کنه؟ +پرمیشن
hvm 10 سال پیش
یه نوع دیگه برای گرفتن مخاطبین داریم که تو اکتیویتی ریزالت قرار داده می شه و کار می کنه، اگر قبلی کار نکرد کد این رو می ذارم، اما نمی دونم چطور باید شخصی سازیش کنم!
Amir 10 سال پیش
من تست کردم هیچ مشکلی نداشت کدتون و ارور LogCat رو بزارید.

پاسخ‌ها 3

یاسر  10 سال پیش

اینو تست کن شاید کمکت کنه

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
        null, null, null, null);

if (cur.getCount() > 0) {
    while (cur.moveToNext()) {
        String id = cur.getString(
                cur.getColumnIndex(ContactsContract.Contacts._ID));
        String name = cur.getString(cur.getColumnIndex(
                ContactsContract.Contacts.DISPLAY_NAME));

        if (cur.getInt(cur.getColumnIndex(
                    ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) {
            Cursor pCur = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
                    new String[]{id}, null);
            while (pCur.moveToNext()) {
                String phoneNo = pCur.getString(pCur.getColumnIndex(
                        ContactsContract.CommonDataKinds.Phone.NUMBER));
                Toast.makeText(NativeContentProvider.this, "Name: " + name 
                        + ", Phone No: " + phoneNo, Toast.LENGTH_SHORT).show();
            }
            pCur.close();
        }
    }
}

نظرات

Amir 10 سال پیش

این پرمیشن رو به AndroidManifest اضافه کنید:

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

نظرات

hvm 10 سال پیش

من با یه ایتنت می رم تو مخاطبین و با کد زیر گزینه انتخاب شده رو درمیارم:

 @Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
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(ContactsContract.Contacts._ID));
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,
null, null);
phones.moveToFirst();
cNumber = phones.getString(phones.getColumnIndex("data1"));
System.out.println("number is:" + cNumber);
}
c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}
}
break;
}
Log.i("LOGG", "LOG9 = " + cNumber);
}

نظرات

hvm 10 سال پیش
لطفا یه کدی که بتونم شماره و اسم مخاطبین رو بگیرم و شخصی سازیشون کنم بذارید.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .