我使用 Android WiFiDirect 应用程序。我强烈地改变了 WiFiDirectDemo 来做一些休闲的事情:
- 组所有者是向其他对等方发送数据的人,
- 发送 pictre 时,会创建新的活动,
- 使用 onTouch 强制创建 xml 文件的动画。
问题:当我启动新服务来发送这个xml(在新活动中使用onTouch)时,我得到连接拒绝给定IP和端口,我已经发送了几秒钟。前一张图。
我完全无法处理连接被拒绝的错误,我怀疑 IP 很忙。当我单击返回按钮返回上一个活动时,它允许我创建一个 xml 文件并再次显示连接被拒绝。
我想知道如何避免这个错误:
E/屏幕共享:5000ms后无法连接到/192.168.49.10(端口8988):isConnected失败:ECONNREFUSED(连接被拒绝)
我的权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>
更新
问题解决了:
您从一个活动开始第二个活动,您将发送的图像放入其中。现在您想再次请求服务以向发送的 IP 发送另一个数据,但您不能。IP 正忙,连接被拒绝,因为广播接收器仍在搜索来自第一个活动的消息。您需要做的是像这样在第二个活动中 @Override OnResume 方法。
@Override
public void onResume(){
super.onResume();
receiver = new WiFiDirectBroadcastReceiver(manager, channel, MainActivity.activityMain);
registerReceiver(receiver, intentFilter);
}
WiFiBroadcast 接收器是我的广播接收器管理器,频道就像在第一个活动中,而activityMain 是简单的活动从第一个传递到第二个像这样
public static MainActivity activityMain;
activityMain = this;