首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不调用WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)

为什么不调用WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)
EN

Stack Overflow用户
提问于 2018-07-02 12:30:37
回答 1查看 328关注 0票数 3

我有两部手机,两部手机的wifi都打开了。我正在尝试wifi code.But WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)无法获得called.Pasted的密码。我想扫描附近所有打开wifi的设备。

代码语言:javascript
复制
public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {

    private WifiP2pManager mManager;
    private WifiP2pManager.Channel mChannel;
    private WifiScanActivity mActivity;
    private WifiP2pManager.PeerListListener myPeerListListener;
    private Context mContxt;

    public WiFiDirectBroadcastReceiver(WifiP2pManager manager, WifiP2pManager.Channel channel,
                                       WifiScanActivity activity) {
        super();
        this.mManager = manager;
        this.mChannel = channel;
        this.mActivity = activity;
        this.mContxt = mActivity.getApplicationContext();
        Toast.makeText(mContxt, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
            // Check to see if Wi-Fi is enabled and notify appropriate activity
        } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
            // Call WifiP2pManager.requestPeers() to get a list of current peers
            // request available peers from the wifi p2p manager. This is an
            // asynchronous call and the calling activity is notified with a
            // callback on PeerListListener.onPeersAvailable()
            Toast.makeText(mContxt, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", Toast.LENGTH_SHORT).show();
            WifiP2pDeviceList list = intent.getParcelableExtra(WifiP2pManager.EXTRA_P2P_DEVICE_LIST);

            for (WifiP2pDevice d : list.getDeviceList()) { //...
                Toast.makeText(mContxt, d.deviceAddress, Toast.LENGTH_SHORT).show();
            }

        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
            // Respond to new connection or disconnections
            Toast.makeText(mContxt, "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", Toast.LENGTH_SHORT).show();
            String acton = intent.getAction();
            if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
                int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
                if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
                    // Wifi P2P is enabled
                } else {
                    // Wi-Fi P2P is not enabled
                }
            }
        } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
            // Respond to this device's wifi state changing
            Toast.makeText(mContxt, "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT", Toast.LENGTH_SHORT).show();
            if (mManager != null) {
                mManager.requestPeers(mChannel,myPeerListListener);// new WifiP2pManager.PeerListListener() {
                   /* @Override
                    public void onPeersAvailable(WifiP2pDeviceList peers) {
                        Log.d(TAG,String.format("PeerListListener: %d peers available, updating device list", peers.getDeviceList().size()));
                        Toast.makeText(mContxt, peers.getDeviceList().size(), Toast.LENGTH_SHORT).show();
                        Toast.makeText(mContxt, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", Toast.LENGTH_SHORT).show();
                        // DO WHATEVER YOU WANT HERE
                        // YOU CAN GET ACCESS TO ALL THE DEVICES YOU FOUND FROM peers OBJECT

                    }
                });*/
            }
        }
    }


}


    public class WifiScanActivity extends AppCompatActivity {

        WifiP2pManager mManager;
        WifiP2pManager.Channel mChannel;
        BroadcastReceiver mReceiver;
        IntentFilter mIntentFilter;
        Context mCntxt;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mCntxt = this.getApplicationContext();
            mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
            mChannel = mManager.initialize(this, getMainLooper(), null);
            mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);

            mIntentFilter = new IntentFilter();
            mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
            mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
            mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
            mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
            mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
                @Override
                public void onSuccess() {
                    Toast.makeText(mCntxt, "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS", Toast.LENGTH_SHORT).show();
                }


                @Override
                public void onFailure(int reasonCode) {
                    Toast.makeText(mCntxt, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", Toast.LENGTH_SHORT).show();
                }
            });

        }

        /* register the broadcast receiver with the intent values to be matched */
        @Override
        protected void onResume() {
            super.onResume();
            registerReceiver(mReceiver, mIntentFilter);
        }
        /* unregister the broadcast receiver */
        @Override
        protected void onPause() {
            super.onPause();
            unregisterReceiver(mReceiver);
        }
    }

它打印"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS",而不是"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB“

EN

回答 1

Stack Overflow用户

发布于 2019-06-24 02:07:54

尝试在应用程序中添加android.permission.ACCESS_COARSE_LOCATION

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51129153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档