WifiP2pManager.discoverPeers在安卓10中失效。

5
以下代码样例返回错误代码0,这是安卓内部错误的错误代码。是否有任何解决方法可以使得在安卓10设备上发现对等设备成为可能?
                wifip2pmanager.discoverPeers(wifip2pmanagerChannel, new WifiP2pManager.ActionListener() {
                @Override
                public void onSuccess() {
                    status.setText("Peer Discovery Started");
                }

                @Override
                public void onFailure(int reason) {

                    status.setText("Error code:" + reason);
                }
            });

你在清单文件中声明了ACCESS_FINE_LOCATION权限吗? - Saurabh Thorat
是的。ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION都已声明。 - J.Maduka
3个回答

8

我也有同样的经历...

ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION并不足够。用户必须显式地激活位置服务! (在我的情况下,打开位置信息解决了问题...)

这意味着:您可以手动在设置中激活位置,或向用户发出易于使用的请求以激活位置服务(类似于权限请求窗口;请参见Google地图)。

有关后者的示例代码,请参见此问题。希望能帮到您!

编辑:如果您寻找不涉及任何Google库的答案,请参见此问题的答案。


嗨,我已经请求了两个权限,并且在检查应用程序信息时它们都被允许。然而,我仍然收到原因代码1的错误。(我的位置也已经打开) - Lavnish Chaudhary

2
除了清单中的声明外,您还需要动态申请此权限。

1
移除ACCESS_COARSE_LOCATION就解决了问题。感谢答案。 - J.Maduka
我尝试了有和没有权限两种方式,仍然出现错误。 - DikShU
您需要在设置中打开“位置”。请查看我的答案 - luke8800gts

0
今天在使用Android 33时遇到了一个问题,通过添加ACCESS_FINE_LOCATIONNEARBY_WIFI_DEVICES来解决。要请求应用程序权限:当活动处于onCreate()状态时。
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{
            android.Manifest.permission.ACCESS_FINE_LOCATION,
            android.Manifest.permission.NEARBY_WIFI_DEVICES,
    }, 0);
    ...
}

检查授予/拒绝的权限:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 0) {
        for(int i = 0; i < permissions.length; i++){
            if(grantResults[i] == PackageManager.PERMISSION_GRANTED){
                Log.d("MainActivity", "Permission " + permissions[i] + " granted");
            }else{
                Log.d("MainActivity", "Permission " + permissions[i] + " denied");
            }
        }
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接