Android中使用Glide无法加载网络JPG图片问题求助
问题解决:Glide加载HTTPS图片失败(EPERM权限错误)
问题根源
从LogCat日志的关键错误java.net.SocketException: socket failed: EPERM (Operation not permitted)可以看出,应用的网络访问权限被拒绝。尽管你已添加INTERNET权限,但针对Android 10+(API 29及以上)版本,还需要补充配置才能正常发起网络请求。
解决方案
1. 补充AndroidManifest配置
- 添加网络状态权限(辅助网络请求状态判断):
<uses-permission android:name="android.permission.INTERNET"/> <!-- 新增权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- 在application标签中启用明文流量支持(即使是HTTPS请求,部分重定向或证书场景下也需要该配置):
<application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.Ui_basics_lesson17" <!-- 新增配置 --> android:usesCleartextTraffic="true" tools:targetApi="31"> <!-- 原有activity配置 --> </application>
2. 移除重复的Glide加载代码
你的ViewAdapter中对同一个ImageView调用了两次Glide加载,会导致请求冲突,保留其中一组加载逻辑即可:
@Override public void onBindViewHolder(@NonNull ViewHolder holder, int position ) { holder.txtName.setText(contacts.get(position).getName()); holder.txtEmail.setText(contacts.get(position).getEmail()); // 保留这一组Glide加载逻辑 Glide.with(contextFromMainActivity) .asBitmap() .load(contacts.get(position).getImageUrl()) .placeholder(R.mipmap.ic_failsafe_image1) .into(holder.image); holder.parent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(contextFromMainActivity, contacts.get(position).getName() + " Selected!", Toast.LENGTH_SHORT).show(); } }); }
3. 可选:配置网络安全策略(针对Android 7.0+)
如果上述配置仍未解决问题,可创建网络安全配置文件:
- 在
res/xml目录下创建network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system"/> </trust-anchors> </base-config> </network-security-config>
- 在application标签中引用该配置:
<application <!-- 原有属性 --> android:networkSecurityConfig="@xml/network_security_config" tools:targetApi="31">
验证步骤
- 清理项目缓存并重新编译
- 重启模拟器确保网络连接正常
- 运行应用查看图片加载情况
内容的提问来源于stack exchange,提问作者LuciferRules
相关产品推荐
相关产品推荐

