마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

메인액티비티가 아닌 클래스에서 메인액티비티를 시작할 때.+수정

0 추천

정적 리시버로 브로드캐스트리시버를 상속하는 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);
			//새 task를 띄움
			context.startActivity(intents);
		}
		else if(bAdapter.getState()==BluetoothAdapter.STATE_TURNING_OFF)
		{
			Log.d("bluetooth is off","not popup");
		
				
			//이렇게 등록된 리시버는 등록한 액티비티가 사라지거나 하면 등록이 해제되는 단점이 있어 죽지 않는 서비스에서 등록합니다
		}	
	}

	
};

 

 

anci (19,950 포인트) 님이 2014년 11월 11일 질문
anci님이 2014년 11월 11일 수정

1개의 답변

+1 추천
해당클래스가 activity 상속이 아니여서  context를 붙이는걸로 알고있습니다.

아래꺼는 소스를 한번올려보시는게 좋겠네요.

메인과 다른엑티비티에서 이프문하고 버튼으론 다 잘됩니다.
콜벳 (7,150 포인트) 님이 2014년 11월 11일 답변
댓글 감사합니다. getActivity도 오류가 납니다. getA..까지만 치고 자동완성해도
getAbortBroadcast()라는 녀석만 나오네요. ㅠ
인텐트에 콘텍스트를 getActivity 로 바꾸시고 하신거에요?
어느 부분의 intent를 context->getActivity로 바꾸시라는 말씀이신지...?
혹시 이부분인가요? Intent intents = new Intent(context, MainActivity.class);
네 거기꺼 context를 getActivity 로 바꾸시고 getActivity.finish(); 로 하심 될거같은데요
음..죄송하지만 말씀해주신대로 해도 안되네요..ㅠㅠ.일단 다른 방법을 더 알아봐야겠습니다..
...