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

Wear OS应用在模拟器外无法发起Volley请求问题咨询

问题排查及解决配置清单
  • 检查明文HTTP访问限制
    Android 9(API 28)及以上系统默认禁止应用访问HTTP协议的接口,你的本地Web-Api如果是HTTP而非HTTPS协议就会被系统拦截,模拟器可能因为版本较低或者默认开启了明文权限所以运行正常。需要在AndroidManifest.xml的application标签中添加如下配置:
<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>

如果需要更精细的控制,也可以单独配置网络安全规则放开对应本地域名/IP的明文访问限制。

  • 修正接口访问地址
    你提到使用本地Web-Api,若你之前在模拟器中使用127.0.0.1/localhost/模拟器专属的10.0.2.2作为服务端地址,在实体手表上都会失效。需要保证手表和运行Web-Api的电脑连接同一局域网,将mainURL替换为电脑的局域网IP地址(比如http://192.168.3.12:8080),同时确认电脑防火墙没有拦截对应端口的访问请求。

  • 检查应用实际权限授予情况
    虽然你已经在清单中声明了网络权限,部分Wear OS定制系统会默认禁用第三方应用的网络权限,你可以进入手表的「设置 - 应用和通知 - 应用信息 - 找到你的应用 - 权限」,确认网络权限已经被授予。

  • 添加请求重试策略
    Wear OS的网络稳定性通常比手机差,Volley默认的超时时间可能过短导致请求还没发出就被终止。你可以在将请求加入队列前,给请求添加重试配置:

stringRequest.setRetryPolicy(new DefaultRetryPolicy(
    10000, // 超时时间设为10秒
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
));
requestQueue.add(stringRequest);
  • 解除电池优化联网限制
    Wear OS为了省电默认会限制后台应用的联网行为,如果你的请求是在应用退到后台时发送的,需要将应用加入电池优化白名单:进入手表「设置 - 电池 - 电池优化 - 找到你的应用 - 选择「不优化」」。

  • 确认请求队列初始化正确性
    你提到请求队列在构造函数中创建,需要确保请求队列是使用Application上下文初始化的,避免随Activity销毁被回收,导致请求没有被实际执行。标准的Volley全局请求队列初始化示例如下:

// 在Application类中初始化
public class MyApplication extends Application {
    private static RequestQueue requestQueue;

    @Override
    public void onCreate() {
        super.onCreate();
        requestQueue = Volley.newRequestQueue(getApplicationContext());
    }

    public static RequestQueue getRequestQueue() {
        return requestQueue;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:05