هل هناك طريقة بسيطة للتحقق مما إذا كان المتصل الوارد هو جهة اتصال في Android؟

StackOverflow https://stackoverflow.com/questions/2193664

  •  25-09-2019
  •  | 
  •  

سؤال

عندما يتلقى هاتف Android مكالمة ، يتحقق تلقائيًا إذا كانت المكالمة موجودة في قاعدة بيانات الاتصال الخاصة بها. كنت أتساءل عما إذا كانت هناك طريقة بسيطة للوصول إلى هذه المعلومات. انا املك PhoneStateListener يؤدي ذلك إجراء بعض الإجراءات أثناء حالة الرنين ، وأريد التحقق مما إذا كان المتصل الوارد في قائمة جهات الاتصال.

هل هناك طريقة للقيام بذلك دون المرور عبر جهات الاتصال ContentProvider?

هل كانت مفيدة؟

المحلول

يستخدم تطبيق الهاتف جهات الاتصال ContentProvider جدا؛ لست متأكدًا من سبب رغبتك في تجنب ذلك. علاوة على ذلك ، فهي الطريقة الوحيدة التي يمكن الوصول إليها للجمهور للوصول إلى تلك المعلومات.

حل رقم إلى اسم (قبل 2.0 ، في هذه الحالة) بسيط بما فيه الكفاية على أي حال:

Uri uri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));

String name = null;
Cursor cursor = context.getContentResolver().query(uri, 
                    new String[] { Phones.DISPLAY_NAME }, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
    name = cursor.getString(cursor.getColumnIndex(Phones.DISPLAY_NAME));
    cursor.close();
}

نصائح أخرى

هنا هو الرمز 2.0 وبعد ذلك

    Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Cursor cursor = resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null);        

    if (cursor != null && cursor.moveToFirst()) {
        String name = cursor.getString(0);
        cursor.close();
    } 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top