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

刚接触okhttp3,调用PlantNet API结果无法显示在TextView上如何解决?

问题排查与解决步骤
  • 检查基础权限与文件有效性
    先确认AndroidManifest.xml中已添加必要权限:

    <!-- 网络访问权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Android 12及以下读取外部存储权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <!-- Android 13及以上读取图片权限 -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    

    同时添加日志判断目标图片是否存在:

    Log.d("FileCheck", "文件是否存在:" + file1.exists());
    

    如果返回false,说明路径有误或无读取权限,需要先修复文件访问问题。

  • 校验API请求逻辑
    你当前代码中的api-key=123为测试占位值,需先替换为PlantNet平台申请的真实有效密钥。
    新增响应状态校验,避免接口报错时拿不到有效返回:

    Response response = client.newCall(request).execute();
    // 先判断请求是否成功
    if (!response.isSuccessful()) {
        textView.setText("接口请求错误,状态码:" + response.code());
        return;
    }
    // response.body().string()只能调用一次,先存储到变量中
    String result = response.body().string();
    Log.d("APIResult", result); // 先在Logcat中查看是否拿到返回内容
    textView.setText(result);
    

    可以先在Logcat中过滤APIResult标签,确认是否有内容返回,排除TextView本身显示问题。

  • 替换为规范异步请求逻辑
    StrictMode绕过主线程网络限制属于调试用的非常规方案,高版本Android系统可能仍会拦截,且主线程执行耗时网络请求容易触发ANR,建议改为OkHttp自带的异步请求,同时注意UI更新必须在主线程执行:

    // 把原来的execute()替换为以下异步逻辑
    OkHttpClient client = new OkHttpClient();
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            e.printStackTrace();
            // 切回主线程更新UI
            runOnUiThread(() -> textView.setText("请求失败:" + e.getMessage()));
        }
    
        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String result = response.body().string();
            runOnUiThread(() -> textView.setText(result));
        }
    });
    
  • 校验TextView控件有效性
    可以先给TextView手动设置测试文本,确认控件本身可以正常显示:

    textView.setText("测试文本");
    

    如果测试文本也无法显示,检查布局文件中TextView的宽高、文字颜色是否和背景冲突、是否被其他控件遮挡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:57:02