Android应用Nearby Connection发送消息崩溃问题求助
从你贴的崩溃日志里,一眼就能揪出核心问题:java.lang.IllegalStateException: GoogleApiClient is not connected yet.——你点击发送按钮调用sendPayload的时候,GoogleApiClient还没完成和Google服务的连接,自然没法执行Nearby的消息发送操作。
给你几个具体的排查和修复方向:
先确保GoogleApiClient连接完成后再允许发送
Nearby Connections完全依赖GoogleApiClient,你必须等它的onConnected()回调触发之后,才能让用户点击发送按钮。比如可以在onConnected()里把发送按钮设置为可点击,或者设置一个全局的isClientConnected标志位,在sendPayload方法开头先判断这个标志:public void sendPayload(View view) { if (mGoogleApiClient == null || !mGoogleApiClient.isConnected()) { Toast.makeText(this, "设备还未完成连接,请稍等", Toast.LENGTH_SHORT).show(); return; } // 原来的发送逻辑 }检查GoogleApiClient的连接流程是否完整
确认你已经正确初始化了GoogleApiClient,并且调用了connect()方法,同时要处理连接失败的情况:- 如果连接失败,
onConnectionFailed()回调会被触发,你可以在这个方法里打印日志,看看具体失败原因——比如Android Things设备的Google Play服务版本过低、缺少必要权限,或者设备没有联网/蓝牙未开启。
- 如果连接失败,
验证权限和设备环境
Nearby Connections需要这些权限:ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION、蓝牙相关权限,确保你的Manifest里已经声明,并且在Android 6.0+设备上请求了运行时权限。另外,Android Things设备和手机必须在同一个蓝牙/Wi-Fi范围内,而且设备上的Google Play服务要正常运行。添加调试日志追踪连接状态
在GoogleApiClient的几个关键回调里加Log,比如:@Override public void onConnected(@Nullable Bundle bundle) { Log.d("NearbyDebug", "GoogleApiClient已连接"); } @Override public void onConnectionSuspended(int i) { Log.d("NearbyDebug", "GoogleApiClient连接断开,原因:" + i); } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { Log.e("NearbyDebug", "GoogleApiClient连接失败,错误码:" + connectionResult.getErrorCode()); }这样你就能清楚看到连接的整个状态变化,方便定位问题。
内容的提问来源于stack exchange,提问作者Thorsten

