Java 三星10+韩元';不允许wifi p2p发现

Java 三星10+韩元';不允许wifi p2p发现,java,android,p2p,wifip2p,samsung-galaxy,Java,Android,P2p,Wifip2p,Samsung Galaxy,我编写了一个Android应用程序,允许设备通过Wi-Fi P2P发现来发现附近的设备。我跟在后面 该应用程序在我的三星Tab E平板电脑上运行得很好——当该应用程序在平板电脑上运行时,我能够扫描并找到其他设备。但在我的三星Galaxy S10 Plus上运行应用程序时,我甚至无法激活对等发现过程。除非我手动进入Galaxy s10 Plus的设置并启用Wi-Fi发现模式,否则我的三星s10 Plus甚至不会出现在平板电脑的可用对等设备列表中。此时,我的Tab E平板电脑可以“看到”我的Gala

我编写了一个Android应用程序,允许设备通过Wi-Fi P2P发现来发现附近的设备。我跟在后面

该应用程序在我的三星Tab E平板电脑上运行得很好——当该应用程序在平板电脑上运行时,我能够扫描并找到其他设备。但在我的三星Galaxy S10 Plus上运行应用程序时,我甚至无法激活对等发现过程。除非我手动进入Galaxy s10 Plus的设置并启用
Wi-Fi发现模式,否则我的三星s10 Plus甚至不会出现在平板电脑的可用对等设备列表中。此时,我的Tab E平板电脑可以“看到”我的Galaxy S10 Plus,但一旦我退出Galaxy S10 Plus上的设置屏幕,Wi-Fi discovery将关闭,我将无法再将其视为潜在的p2p对等机

是否有一种方法允许在三星s10 Plus上进行对等发现?如果没有它,我无法测试我的应用程序,我宁愿不购买另一个Tab E来测试p2p连接

以下是我的应用程序正在运行的代码,以供参考:

导入androidx.appcompat.app.appcompat活动;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.IntentFilter;
导入android.net.wifi.WifiManager;
导入android.net.wifi.p2p.wifip2p设备;
导入android.net.wifi.p2p.WifiP2pDeviceList;
导入android.net.wifi.p2p.WifiP2pManager;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
按钮btnOnOff、btnDiscover、btnSend;
列表视图列表视图;
文本视图读取消息框,连接状态;
编辑文本写入;
//对于以编程方式打开和关闭wifi:
WifiManager WifiManager;
WifiP2pManager-mManager;
WifiP2pManager.Channel mcchannel;
广播接收机;
IntentFilter minentfilter=新IntentFilter();
//用于跟踪要连接的可用客户端
List peers=new ArrayList();
字符串[]deviceNameArray;
wifip2p设备[]设备阵列;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始工作();
//初始化按钮包含ClickListeners();
mManager=(WifiP2pManager)getSystemService(Context.WIFI\u P2P\u服务);
mChannel=mManager.initialize(这是getMainLooper(),null);
mReceiver=新的WiFiDirectBroadcastReceiver(mManager、mChannel、this);
minentfilter=newintentfilter();
minentfilter.addAction(WifiP2pManager.WIFI\u P2P\u STATE\u CHANGED\u ACTION);
minentfilter.addAction(WifiP2pManager.WIFI\u P2P\u PEERS\u CHANGED\u ACTION);
minentfilter.addAction(WifiP2pManager.WIFI\u P2P\u连接\u更改\u操作);
MinentFilter.addAction(WifiP2pManager.WIFI\u P2P\u此设备\u更改\u操作);
btnDiscover=(按钮)findviewbyd(R.id.discover);
connectionStatus=(TextView)findViewById(R.id.connectionStatus);
//btnSend=(按钮)findviewbyd(R.id.sendButton);
listView=(listView)findViewById(R.id.peerListView);
//read_msg_box=(TextView)findViewById(R.id.readMsg);
//writeMsg=(EditText)findViewById(R.id.writeMsg);
wifiManager=(wifiManager)getApplicationContext().getSystemService(Context.WIFI_服务);
初始化ClickListeners();
}
私有void初始化onClickListeners(){
//设置单击“发现”按钮时的功能。
btnDiscover.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getApplicationContext(),“寻找新的对等对象”,Toast.LENGTH\u SHORT.show();
mManager.discoverPeers(mcchannel,新的WifiP2pManager.ActionListener(){
@凌驾
成功时的公共无效(){
connectionStatus.setText(“发现启动”);
}
@凌驾
公共失效失效失效(内部原因){
connectionStatus.setText(“发现启动失败”);
}
});
}
});
}
//定义发现新对等点时的逻辑
WifiP2pManager.peerlistner peerlistner=新的WifiP2pManager.peerlistner(){
@凌驾
PeersAvailable上的公共无效(WifiP2pDeviceList peerList){
如果(!peerList.getDeviceList().equals(peers)){
//清除同龄人
peers.clear();
//存储设备列表
peers.addAll(peerList.getDeviceList());
deviceNameArray=新字符串[peerList.getDeviceList().size()];
deviceArray=new WifiP2pDevice[peerList.getDeviceList().size()];
int指数=0;
for(WifiP2pDevice设备:peerList.getDeviceList()){
deviceNameArray[索引]=device.deviceName;
deviceArray[索引]=设备;
索引++;
}
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),
android.R.layout.simple\u list\u item\u 1,
设备名称(数组);
setAdapter(适配器);
}
if(peers.size()==0){
Toast.makeText(getApplicationContext(),“未找到任何设备:(”,Toast.LENGTH_SHORT).show();
}
}
};
@凌驾
受保护的void onResume(){
super.onResume();
registerReceiver(mReceiver、MinentFilter);
}
@凌驾
受保护的void onPause(){
super.onPause();
unregi
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.nsdchat"
    ...
    <uses-permission
        android:required="true"
        android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.INTERNET"/>
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.CHANGE_WIFI_STATE)
        != PackageManager.PERMISSION_GRANTED) {
    // Permission is not granted
}
...