정적 리시버로 브로드캐스트리시버를 상속하는 bReceiver라는 클래스를 따로 만들었습니다.
(MainActivity.java클래스는 따로 있습니다)
거기서, 블루투스가 켜졌을 때 조건문 아래에
Log.d("bluettoh is on","popup");
Intent intents = new Intent(context, MainActivity.class);
intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//새 task를 띄움
context.startActivity(intents);
이런식으로, mainActivity를 새로 띄우는 소스를 작성하였는데요,
intent~startActivity가 특정 class를 시작해주는 기능인건 알고있는데 context를 앞에 붙이는 이유가 무엇인지 궁금합니다.
또한, else문으로 위의 조건문이 맞지 않은 경우 앱을 실행시키는 것이 아니라 종료시키고자 하는데요,
finish();가 안되더라구요. 종료되는 주체가 달라서 그런건지....mainActivity자체를 종료시키고자 할 때엔어떻게 해야하는지요?
+
소스 추가합니다.
메인액티비티는 수정할 부분이 전혀없어서 리시버쪽 클래스 소스만 올려봅니다.
public class bReceiver extends BroadcastReceiver
{
BluetoothAdapter bAdapter;
@Override
public void onReceive(Context context, Intent intent)
{
bAdapter = BluetoothAdapter.getDefaultAdapter();
if (bAdapter.getState()==BluetoothAdapter.STATE_TURNING_ON
||bAdapter.getState()==BluetoothAdapter.STATE_ON)
{
Log.d( "bluettoh is on" , "popup" );
Intent intents = new Intent(context, MainActivity. class );
intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intents);
}
else if (bAdapter.getState()==BluetoothAdapter.STATE_TURNING_OFF)
{
Log.d( "bluetooth is off" , "not popup" );
}
}
};
|