public class MainActivity extends Activity
{
BluetoothAdapter bAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// bAdapter = BluetoothAdapter.getDefaultAdapter();
//브로드캐스트 리시버 등록
IntentFilter jinFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
jinFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
jinFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(bReceiver, jinFilter);
}//onCreate
@Override
protected void onStop()
{
super.onStop();
//브로드캐스트리시버 해지
unregisterReceiver(bReceiver);
}
//브로드캐스트 리시버
private BroadcastReceiver bReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
bAdapter = BluetoothAdapter.getDefaultAdapter();
final String action = intent.getAction();
if(action.equals(BluetoothAdapter.ACTION_STATE_CHANGED))
{
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
BluetoothAdapter.ERROR);
switch(state)
{
case BluetoothAdapter.STATE_TURNING_ON:
Intent intents = new Intent(context,MainActivity.class);
intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//새 task를 띄움
context.startActivity(intents);
break;
}
}
}
};
}
안녕하세요.
원래는 manifest.xml에 정적으로 리시버를 추가했다가, 동적으로 리시버를 선언/해제하는 것으로 소스를 수정했습니다.
핸드폰의 블루투스가 on 될때[ 사용자가 환경설정 등에서 블루투스 활성화버튼 누름] 를 감지해서
앱이 자동으로 켜지게[mainActivity.class] 하고싶은데요.. 반응이 없습니다..
stop 에서 브로드캐스트리시버를 해지해야 에러가 안나고.. 어떠한 점에서 문제가 있는지 모르겠습니다.ㅠ
제가 생각하기엔 unregisterReceiver(bReceiver); 때문에 브로드캐스트리시버에서 감지를 못하는거같은데..
다른 방법이 없을까요?..
+
이전에 수정하기전의 정적리시버에서는 앱을 종료한 홈화면에서 , 블루투스 on이 감지되면 앱이 실행되었습니다.
이런 경우엔 동적 리시버가 아닌 정적리시버로 해야하는걸까요?