안녕하세요.
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




소스만있는것보다는 에러로그가 있는게 더 도움이 되지요..