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

Service 에서 Activity 호출하려고 하는데 자꾸 오류가 나네요!

0 추천
public class AlwaysOnTopService extends Service {
	private Button mPopupView;
	private WindowManager.LayoutParams mParams;
	private WindowManager mWindowManager;


	private OnTouchListener mViewTouchListener = new OnTouchListener() {
		@Override public boolean onTouch(View v, MotionEvent event) {
			if(event.getAction() == MotionEvent.ACTION_DOWN)
			{
				Context context = getApplicationContext();
				Intent intent = new Intent(context, StatusBarMain.class);
				intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				context.startActivity(intent);

			}
			
			return true;
		}
	};
	
	@Override
	public IBinder onBind(Intent arg0) { return null; }
	
	@Override
	public void onCreate() {
		super.onCreate();

		mPopupView = new Button(this);
		mPopupView.setBackgroundColor(Color.argb(255, 255 , 255, 255));
		
		mPopupView.setOnTouchListener(mViewTouchListener);

		mParams = new WindowManager.LayoutParams(
			WindowManager.LayoutParams.MATCH_PARENT,
			WindowManager.LayoutParams.WRAP_CONTENT,
			WindowManager.LayoutParams.TYPE_PHONE,
			WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
			PixelFormat.TRANSLUCENT);
		mParams.gravity = Gravity.TOP;

		mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);	
		mWindowManager.addView(mPopupView, mParams);
	}




	@Override
	public void onDestroy() {
		if(mWindowManager != null) {		
			if(mPopupView != null) mWindowManager.removeView(mPopupView);
		}
		super.onDestroy();
	}
}

 

위에 코드중에

if(event.getAction() == MotionEvent.ACTION_DOWN)
			{
				Context context = getApplicationContext();
				Intent intent = new Intent(context, StatusBarMain.class);
				intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				context.startActivity(intent);

			}
다음과 같이 터치다운 이벤트를 받게 되면 액티비티를 시작하는 Service를 만들고 있는데 계속 오류가 되네요 ㅠㅠ 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);를 추가했는데도 오류가 났는데 뭐가 문제일까요?
안드로이드완전초짜 (250 포인트) 님이 2015년 11월 28일 질문

1개의 답변

+1 추천
 
채택된 답변
메니페스트에 StatusBarMain 이 선언되어 있나요? 일단 이거 부터 확인해보시고

Intent intent = new Intent(AlwaysTopOnService.this, StatusBarMain.class);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

하시면 됩니다.

당연히 되야 하는 코드인데 안되는 이유를 역으로 점검해보세요.

1. StatusBarMain 말고 가장 기본적인 Activity 를 만들어서 테스트 해보세요.(StatusBarMain 자체가 에러인지 판단)

2. 기본 Activity 를 onCreate 에 만들어서 테스트 해보세요(터치 이벤트에서 에러가나는건지 판단)
라쎄린드 (25,460 포인트) 님이 2015년 11월 29일 답변
안드로이드완전초짜님이 2015년 11월 30일 채택됨
...