هل هناك طريقة بسيطة للتحقق مما إذا كان المتصل الوارد هو جهة اتصال في Android؟
سؤال
عندما يتلقى هاتف 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();
}
لا تنتمي إلى StackOverflow