权限在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.
有人对此有什么建议吗?谢谢。