#android
#Android
Вопрос:
Я использую следующий код для получения телефонного контакта
Cursor phones = Objects.requireNonNull(getActivity()).getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null,
ContactsContract.Contacts._ID " = ? ", new String[]{id}, ContactsContract.Contacts.DISPLAY_NAME_PRIMARY " ASC");
if (phones != null amp;amp; phones.getCount() > 0) {
while (phones.moveToNext()) {
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String photoUri = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI));
}
}
Здесь я получаю content://com.android.contacts/display_photo/17
как photoUri, Но мне нужен реальный путь, я попробовал следующий способ.
public static String getPath(Uri contentUri, Context context) {
String resu<
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
result = contentUri.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
result = cursor.getString(idx);
cursor.close();
}
return resu<
}
Но это выдает IllegalArgumentException at android.database.DatabaseUtils.readExceptionFromParcel
Комментарии:
1. вы должны использовать свой
Uri
(в вашем случаеcontent://com.android.contacts/display_photo/17
), а не какой-либо «путь к файлу»2. Я хочу получить путь к изображению профиля, потому что мне нужно поделиться им.
3. Попробуйте этот синтаксис :
cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
4. Я получил исключение от
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
самого себя.5. поэтому поделитесь своим
Uri
, а не каким-либо «путем к файлу»