안녕하세요.

Android 초보이고, 이래저래 꾸역꾸역 한번 어플을 만들면서 알아가고 있는 중 입니다.

 

제가 Wi-Fi 연결 어플을 하나 만들고 있는데요.

 

버튼을 두고, 버튼을 클릭시에 특정 AP로 접속하는 것은 확인을 하였습니다.

 

그래서 이번엔 주변에 AP를 검색해서 Scan 하여서 ScanList 에 뿌리고, 해당 List 에서 클릭시 연결하는 동작을 하려고 하는데요.

 

물론 이것도 우선은 특정 AP의 SSID 와 BSSID 를 이용을 할 겁니다.

 

그런데, 이상하게 Scan 하여서 List에 뿌리는 것 까지는 됐는데

 

List Item 을 Click 하게 되면 App 이 죽어 버리네요.

 

도움 부탁드립니다.

 

import java.util.ArrayList;
import java.util.List;

import com.masterap.WiFiUtils;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.LinkProperties;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class MasterAPActivity extends Activity {
 
 private static final String TAG = "MasterAPActivity";
 private List<ScanResult>mScanResult;
 private WifiManager mWifiManager;
 WifiReceiver mReceiver;
 ArrayList<String>mArrayScanList;
 ListView mList;
 MasterScanListAdapter mListAdapter;
 ArrayList<MasterAPScanData> mScanData;
 LayoutInflater inflater;
 WifiLock mLock;
 private boolean mConnect;
 private WiFiUtils mWiFiUtils;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        mList = (ListView)findViewById(R.id.scanList);
        mList.setTextFilterEnabled(true);
        ListItemClickListener listItemClickListener = new ListItemClickListener(); // Listview 관련.
        mList.setOnItemClickListener(listItemClickListener); //Listview 관련.
       
        mScanData = new ArrayList<MasterAPScanData>();
       
        mWifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
        mReceiver = new WifiReceiver();
       
        registerReceiver(mReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        mWifiManager.startScan();
        Log.e(TAG, "onCreate");
    }
   
    public void onDestroy() {
     Log.e(TAG, "onDestroy");
     super.onDestroy();
     if(mReceiver != null)
      unregisterReceiver(mReceiver);
    }
   
    public void getWiFiScanResult() {
     mScanResult = mWifiManager.getScanResults();
     
     Log.e(TAG, "getWifiScanResult");
     for (int i = 0; i < mScanResult.size(); i++) {
      ScanResult result = mScanResult.get(i);
      mScanData.add(new MasterAPScanData(result.SSID.toString(), result.capabilities.toString(), Integer.toString(result.level)));
     }
     
     mListAdapter = new MasterScanListAdapter(this, R.layout.scan_list_item, mScanData);
     mList.setAdapter(mListAdapter);
    }
   
    public class ListItemClickListener implements OnItemClickListener {
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
      Log.e(TAG, "mItemClickListener");    
   WifiConfiguration config = new WifiConfiguration();
   LinkProperties mLinkProperties = new LinkProperties();
   mLock.acquire();
   
      config.SSID = "\"" + "LGU+ AMR510_0000000" + "\"";
      config.BSSID = "58:1d:91:34:32:34"; // Test 용 Mac Address
      config.status = WifiConfiguration.Status.DISABLED;
      config.priority = 40;
      
      config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
      config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
      config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
      config.allowedAuthAlgorithms.clear();
      config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
      config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
      config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
      config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
      config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
      
      int networkId = mWifiManager.addNetwork(config);
      if(networkId != -1) {
       mWifiManager.enableNetwork(networkId,  true);
      }
     }
    }

}

 

감사합니다~~~

 

에러 로그 삽입하여 다시 질문드립니다.

에러 로그 : Listview_Log