Wifi Direct P2P 无法在 Android 10+ 设备上运行,无法发现设备

Posted

技术标签:

【中文标题】Wifi Direct P2P 无法在 Android 10+ 设备上运行,无法发现设备【英文标题】:Wifi Direct P2P not working on Android 10+ devices, Unable to discover devices 【发布时间】:2020-12-13 06:21:09 【问题描述】:

您好,我正在开发需要使用 Wi-fi Direct 连接设备的设备。我的代码在所有设备上都有效,但对于 android 10+ 设备,发现一直失败。

我隐式和显式地请求所需的权限。

在清单中我要求这些权限。

        android:name="android.permission.ACCESS_FINE_LOCATION"
        android:required="true" />
    <uses-permission
        android:name="android.permission.ACCESS_COARSE_LOCATION"
        android:required="true" />
    <uses-permission
        android:name="android.permission.ACCESS_WIFI_STATE"
        android:required="true" />
    <uses-permission
        android:name="android.permission.CHANGE_WIFI_STATE"
        android:required="true" />

我也明确要求这些权限。

这是我正在尝试的代码 [适用于 Android 10+ 以下的所有设备]

private void discoverWifi() 

      if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) !=  
           PackageManager.PERMISSION_GRANTED) 
            return;
        
        wifiP2pManager.discoverPeers(wifiChannel, new WifiP2pManager.ActionListener() 
            @Override
            public void onSuccess() 
                connectionStatus.setText("Discover Start");
            
    
            @Override
            public void onFailure(int i) 
                connectionStatus.setText("Discover not Start");
            
        );
     

【问题讨论】:

有人可以帮忙吗? 你在onFailure里面得到了什么错误代码? 我在模拟器的 onFailure 中收到错误代码 2。 有人请吗?? 错误代码2对应WifiP2pManager .BUSY。我很确定,模拟器不支持 P2P。你有真实的设备来测试吗? 【参考方案1】:

在 Android 10+ 设备上,您应该打开位置,否则发现将失败

【讨论】:

以上是关于Wifi Direct P2P 无法在 Android 10+ 设备上运行,无法发现设备的主要内容,如果未能解决你的问题,请参考以下文章

Android | WIFI Direct -1 Basic knowledge

Android | WIFI Direct -1 Basic knowledge

Android | WIFI Direct -1 Basic knowledge

关于 BroadcastReceiver 类的 Android WiFi Direct (P2P) 问题

Android WiFi Direct android.net.wifi.p2p.PEERS_CHANGED 收到无休止

Android Wifi Direct - 基于距离的 P2P 文件共享