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

时间:2018-07-02 04:30:37

标签: android wifi

我有2部手机,并且两者都打开了wifi。我正在尝试wifi代码。但是WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)没有被调用。粘贴了代码。我想扫描附近所有开启wifi的设备。

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);
        }
    }

它打印“ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC”,“ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”,“ SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS”,但不打印“ BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB”

1 个答案:

答案 0 :(得分:0)

尝试在您的应用中添加android.permission.ACCESS_COARSE_LOCATION