인텐트로 다른 액티비티를 시작하고자 했는데 에러가 발생

startActivity(it); //에러 발생


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// input your code herepublic class AlwaysTopServiceTouch extends Service {
    private View mView;
    private WindowManager mManager;
    private WindowManager.LayoutParams mParams;
 
    private float mTouchX, mTouchY;
    private int mViewX, mViewY;
 
    private boolean isMove = false;
    Intent it = new Intent(this, DBActivity.class);
 
 
 
    private OnTouchListener mViewTouchListener = new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
 
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    isMove = false;
 
                    mTouchX = event.getRawX();
                    mTouchY = event.getRawY();
                    mViewX = mParams.x;
                    mViewY = mParams.y;
 
                    break;
 
                case MotionEvent.ACTION_UP:
                    if (!isMove) {
//                        Toast.makeText(getApplicationContext(), "???",
//                                Toast.LENGTH_SHORT).show();
                        startActivity(it); //에러 발생
                    }
 
cs

에러 코드는

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?


플래그 어쩌구 저쩌구 FLAG_ACTIVITY_NEW_TASK  이게 요구된다는데

확인결과

서비스는 태스크가 없기 때문에 액티비티를 시작하려면 new task 플래그를 줘야 한다고 한다.


그래서 코드수정

startActivity(it) 를

startActivity(it.addFlags(FLAG_ACTIVITY_NEW_TASK));

위와 같이 수정하니 에러가 발생하지 않았다.



+ Recent posts

티스토리 툴바