WifiP2pManager onPeersAvailable 设备列表在某些设备中始终为 0

问题描述 投票:0回答:0

权限在AndroidManifest.xml和运行时都给出,eg.

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission
        android:name="android.permission.NEARBY_WIFI_DEVICES"
        android:usesPermissionFlags="neverForLocation" />

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE)
                != PackageManager.PERMISSION_GRANTED) {
            // Permission is not granted
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_WIFI_STATE},
                    1);
        }
......

然而,在网络对等更改回调中,设备列表始终为 0:

WifiP2pManager.PeerListListener peerListListener = new WifiP2pManager.PeerListListener() {
        @Override
        public void onPeersAvailable(WifiP2pDeviceList wifiP2pDeviceList) {
            boolean bConnected = false;
            boolean bHostAvailable = false;
            Log.i(TAG, "onPeersAvailable "+wifiP2pDeviceList.getDeviceList().size());
......

在同一个设备上,发现总是返回失败 0:

btnDiscover.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                wifiP2pHandler.manager.discoverPeers(wifiP2pHandler.channel, new WifiP2pManager.ActionListener() { //ensure that the list of peers is up to date
                    @Override
                    public void onSuccess() {
                        DisplayStatus("Discovery started", COLOR_STATUS.NORMAL);
                        //btnDiscover.setEnabled(false);
                    }

                    @Override
                    public void onFailure(int i) {
                        DisplayStatus("Got WiFi? Discovery failed: " +i, COLOR_STATUS.NOK);
                    }
                });
            }
        });

此设备是华为 P30 pro(Android 10,API 29)。同样的应用程序在华为 Mate 20 pro(Android 10,API 29)和三星 A13(Android 13,API 33)上运行良好。编译器:Android Studio Electric Eel | 2022.1.1补丁1.

有人对此有什么建议吗?谢谢。

wifip2p
© www.soinside.com 2019 - 2024. All rights reserved.