初始化WifiP2pManager通道时出现问题

时间:2019-08-11 10:31:13

标签: android wifi wifimanager wifip2p

我想在我的android应用程序中初始化wifiP2pManager通道,但是该应用程序在该行代码中崩溃了。

我调试了几次代码,从中我了解到问题在于初始化p2pManager通道。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="iac.apps.androidwifitutorial">


<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>



<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
     </activity>
   </application>

</manifest>



wifiManager=(WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);

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



package iac.apps.androidwifitutorial;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.p2p.WifiP2pManager;
import android.widget.Toast;


public class WifiDirectBroadcastReceiver extends BroadcastReceiver {

private WifiP2pManager mManager;
private WifiP2pManager.Channel mChannel;
private MainActivity mActivity;

public WifiDirectBroadcastReceiver(WifiP2pManager mManager, WifiP2pManager.Channel mChannel, MainActivity mActivity) {
    this.mManager = mManager;
    this.mChannel = mChannel;
    this.mActivity = mActivity;
}

@Override
public void onReceive(Context context, Intent intent) {

    String action = 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){
            Toast.makeText(context, "Wifi is ON", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(context, "Wifi is OFF", Toast.LENGTH_SHORT).show();
        }
    }else if(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) 
 {

    }else if(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)){

    }else if(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)){

        }
    }
}

调试时,我发现问题出在通道初始化上

0 个答案:

没有答案