You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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">

验证步骤

  1. 清理项目缓存并重新编译
  2. 重启模拟器确保网络连接正常
  3. 运行应用查看图片加载情况

内容的提问来源于stack exchange,提问作者LuciferRules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:07:35