【发布时间】:2020-12-12 02:50:14
【问题描述】:
我的要求是我需要一直使用 glide 通过从用户手机中获取来加载联系人图像,到目前为止我已经取得的成果如下:
以下通过电话或电子邮件ID获取联系人URI的方法:
public static Uri getContactURI(Context context, String emailOrMobile) {
Log.v(TAG, "displayContactPic: " + emailOrMobile);
if (emailOrMobile == null) {
Log.w(TAG, "emailOrMobile: " + emailOrMobile);
return null;
}
if (PermissionUtil.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
Log.w(TAG, "permission.READ_CONTACTS is not available! will skip");
return null;
}
Long contactId = null;
if (emailOrMobile.contains("@")) {
contactId = AppUtils.getContactIdByEmail(emailOrMobile, context);
} else {
contactId = AppUtils.getContactIdByPhoneNums(emailOrMobile, context);
}
Log.v(TAG, "contactId: " + contactId);
if (contactId != 0) {
return Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, "" + contactId);
} else {
return null;
}
}
将 getContactURI(contactImgUri) 传递给下面的方法,以使用下面的滑行加载图片
Glide.with(context)
.load(contactImgUri)
.apply(RequestOptions.circleCropTransform())
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
//Log.d(TAG, " onLoadFailed Exception: " + e);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, com.bumptech.glide.load.DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(imageView);
图像正在加载,但在 android studio log-cat 中我看到打印了太多日志,如下所示:
W/Glide:content://com.android.contacts/contacts/513 大小为 [88x88] 加载失败 com.bumptech.glide.load.engine.GlideException 类:加载资源失败 有3个原因: 滑翔:根本原因 (1 of 3) java.io.FileNotFoundException:对于 content://com.android.contacts/contacts/513,InputStream 为空
Glide:根本原因 (2 of 3) java.io.FileNotFoundException:此 URI 不支持流 I/O。; URI:content://com.android.contacts/contacts/513,调用用户:android.uid.shared:10041,调用包为:[com.android.providers.blockednumber,com.android.providers.userdictionary, com.android.providers.contacts,com.android.calllogbackup] 在 android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:149)
Glide:根本原因 (3 of 3) java.io.FileNotFoundException:此 URI 不支持流 I/O。; URI:content://com.android.contacts/contacts/513,调用用户:android.uid.shared:10041,调用包为:[com.android.providers.blockednumber,com.android.providers.userdictionary, com.android.providers.contacts,com.android.calllogbackup] 在 android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:149)
如果我有 1000 多个联系人,并且在 log-cat 中我可以看到太多这样的日志被打印出来,我正在寻找一种解决方案来避免上述日志或警告。
感谢任何帮助!
【问题讨论】:
标签: android