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

안드로이드 6.0 에서 화면 오버레이 감지됨 <-- 설정 질문입니다.

0 추천

안녕하세요.

안드로이드 마쉬멜로우 부터 스마트폰 권한을 사용자에게 직접허가를 받아야한다해서 , 프로그램을 수정중인데요.

지금하고있는건 , 사용자의 핸드폰 번호를 알기위해서 READ_PHONE_STATE 를 허가해주고있습니다.

https://developer.android.com/training/permissions/requesting.html?hl=ko#perm-check

프로그램은 마무리가 되었는데요,

 

// Here, thisActivity is the current activity
        //권한 보유여부 확인
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

            // Should we show an explanation?
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.READ_PHONE_STATE)) {
                //sdk 23버전이상
                //Toast.makeText(mContext,"23버전이상",Toast.LENGTH_SHORT).show();
                // Show an expanation to the user *asynchronously* -- don't block
                // this thread waiting for the user's response! After the user
                // sees the explanation, try again to request the permission.
                //PhoneNumber =   getPhoneNumber(mContext,"-");
                Toast.makeText(mContext,"권한요청을 사용자가 거절",Toast.LENGTH_SHORT).show();
            } else {
                // No explanation needed, we can request the permission.
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.READ_PHONE_STATE},
                        MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);

                // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
                // app-defined int constant. The callback method gets the
                // result of the request.
                Toast.makeText(mContext,"첫실행 -> 권한요청",Toast.LENGTH_SHORT).show();
            }
        }else {
            PhoneNumber =   getPhoneNumber(mContext,"-");
            Toast.makeText(mContext,"권한있음==="+PhoneNumber,Toast.LENGTH_SHORT).show();
        }
        Log.d("PhoneNumber",PhoneNumber);


    }

    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_PHONE_STATE: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    //PhoneNumber =   getPhoneNumber(mContext,"-");
                    //Toast.makeText(mContext,"승인받음===",Toast.LENGTH_SHORT).show();
                    Log.d("rrrrrrr=====","승인");
                    // permission was granted, yay! Do the
                    // contacts-related task you need to do.

                } else {

                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.
                    Log.d("rrrrrrr=====","거절");
                    //Toast.makeText(mContext,"거절 ㅜ===",Toast.LENGTH_SHORT).show();
                }
                return;
            }

            // other 'case' lines to check for other
            // permissions this app might request
        }
    }



권한 요청 창이 뜨고 사용자가 확인 을 누르면

화변 오베레이 감지됨

설정 > 앱에서 화면 오버레이를 사용하지 않도록 설정해야 합니다.

라고 안드로이드가 띄워줍니다.

그래서 네이버에 검색해서 백그라운드에서 실행중인건 싹다 중지를 시켯는데도, 계속 나옵니다...

http://kairosre.tistory.com/670

http://blog.ptware.net/220880485663

 

그리고 현재 안드로이드 6.0 버전인 폰이 2개가 있습니다.
-갤럭시노트4
-갤럭시A7
둘다 앱 설정 초기화를 하고 실행을 하면 a7은 오버레이설정하라고 계속뜨고 , 노트4는 바로 설정이 됩니다..

 

A7이 저가형 폰이기 합니다만... 이런게 막히게 만들었을까요..?? ㅜㅠ

꾸우우 (1,140 포인트) 님이 2017년 1월 10일 질문
안되던 폰을 공장초기화 하니까 됩니다...
이 폰은 4.0->5.0->6.0 으로 버전업을 계속 시켯던거라서 뭔가 꼬여있엇나.. 싶습니다.
이번엔 , 공장초기화 했더니 바로 6.0 으로 깔려서인지 바로 되더라구요.

1개의 답변

0 추천
"다른 앱 위에 그리기 권한"을 모두 해제한 상황에서도 해당 팝업이 표시된다는 건가요?
익명사용자 님이 2017년 1월 10일 답변
네 맞습니다..
빠짐없이 해제했는데도 A7만 그렇습니다.
...