ListView lv = (ListView) findViewById(R.id.list_view);
        lv.setAdapter(mAdapter);
        lv.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
    BluetoothDevice device = mAdapter.getItem(position);
    
//    V/Test    ( 1541): key : android.bluetooth.device.extra.DEVICE, value : CC:F9:E8:05:55:8B, class : class android.bluetooth.BluetoothDevice
//    V/Test    ( 1541): key : android.bluetooth.device.extra.PASSKEY, value : 302503, class : class java.lang.Integer
//    V/Test    ( 1541): key : android.bluetooth.device.extra.PAIRING_VARIANT, value : 2, class : class java.lang.Integer

    //startActivity(new Intent("android.bluetooth.device.action.PAIRING_REQUEST").putExtra(BluetoothDevice.EXTRA_DEVICE, device).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).putExtra("android.bluetooth.device.extra.PAIRING_VARIANT", 5));
    
    try {
     Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class });
        socket = (BluetoothSocket) m.invoke(device, 1);
     socket.connect();
    } catch (Exception e){
     
    }
    ShowDialog(position);
   }
  });

 

 

이 소스에서 socket.connect() 로 Bluetooth 페어링하고있습니다.

startdiscovery 로 장치를 찾아서 리스트뷰에 뿌린다음에 리스트뷰에서 기기하나를 선택하면 페어링하는 코드입니다.

터치하면 자동으로 cancelDiscovery 로 서칭을 멈춘다음에 페어링을 시도 하는데요

시도는 잘 되고 목록을 누르면 페어링하겠냐는 팝업과 pair 누르면 페어링도 잘 되구요

 

근데 페어링하겠냐느 팝업에서 선택을 안하고 두면

 

Force Close / Wait 팝업이 뜹니다...

 

디버그를 걸어봐도 걸리는 곳이 없고.... 구글링 해보니 쓰레드 문제 일 것 같다는데

 

코드상에 쓰레드 돌리거나 시작하는 부분도 없구요

 

아시는 분 꼭 좀 알려주세요 ㅠㅠ