[android] 알림이 표시 될 때 사용자가 권한을 부여하려고하는 경우 Android ‘화면 오버레이 감지 됨’메시지

Nexus 6에 Android Marshmallow가 있습니다. 다음 문제를 해결하려고합니다.

알림이 표시되는 동안 사용자가 권한을 부여하려고하면 “화면 오버레이 감지 됨”메시지가 표시되고 권한 요청 대화 상자가 사라집니다. 물론 앱은 요청 된 권한을 얻지 못합니다. (스크린 샷 확인)

매니페스트에 android.permission.SYSTEM_ALERT_WINDOW- “DRAW OVER OTHER APPS”권한을 추가하여 문제를 해결하려고했지만 운이 없었습니다.

추신 : 알림으로 인해 문제가 발생한 것 같습니다. 다른 앱 위에 오버레이되는 앱이 설치되어 있지 않습니다. 심지어 설정에서 “다른 앱 위에 그리기”권한이있는 모든 앱을 해제했습니다. 도와주지 않았어 ..

누구든지 그 문제에 대한 해결책을 알고 있습니까?

여기에 이미지 설명 입력



답변

내가 우연히 만난 상황에서 나는 스스로 문제를 일으키고 있었다. Toast권한을 요청하는 동시에 사용자에게 정보를 표시 하기 위해 a 를 사용한 결과였습니다 . 이 두 작업이 함께 이러한 유형의 오류를 발생시킵니다.

다른 답변은 다른 사람의 문제를 해결할 수 있습니다. 하지만 자신의 오버레이 오류가 발생하지 않도록주의해야합니다. 권한을 요청하는 동시에 뷰에 무언가를 오버레이하지 않도록주의하세요.


답변

Clean Master 앱을 제거합니다. 나는 그것을 제거하고 문제가 해결되었습니다.


답변

이 문제는 Twilight, cleaner-master, drupe 등과 같은 일부 범인 응용 프로그램 때문에 나타납니다.

이 문제를 해결하려면 해당 범인 앱에 대한 화면 오버레이를 비활성화해야합니다.

나는 moto g4 plus를 가지고 있으며 이것이이 문제를 해결하는 방법

설정-> 앱 선택 —> 다시 앱에서 설정 아이콘 선택 —> 다른 앱 위에 그리기 —> 선택하고 다른 앱에 문제가있는 범인 앱을 비활성화합니다.

내가 한 일은이 권한을 비활성화하여 각 앱을 확인하고 내 앱을 실행하려고 시도하는 것입니다. 다른 앱에 대해 문제가되는 오버레이를 발견 한 하나의 앱을 발견 했으므로 결국이 앱만 비활성화했습니다.

스크린 샷 :

앱 선택 구성 설정 선택

다른 앱 위에 그리기 선택범인 앱 비활성화


답변

여기에 여러 답변과 다른 포럼에서 통찰력을 얻었습니다.

내가 어떻게 문제를 제거했는지 통합 :

  1. 설정> 앱> (문제가 발생한 앱)으로 이동합니다.
  2. 전원 끄기, 재부팅, 비행기 모드가 나타날 때까지 전원 버튼을 누릅니다.
  3. 전원 끄기 옵션 유지
  4. 안전 모드에서 재부팅 선택
  5. 설정> 앱> (문제가 발생한 앱)으로 이동합니다.
  6. 원하는 권한을 선택하십시오.
  7. Android M 업데이트 후 Messenger, Whatsapp, Prisma 등과 같은 앱에서 문제가 발생할 수 있습니다.

문제가 있으면 알려주십시오.

참고 : One plus One 모바일을 사용하고 있습니다.


답변

방금 앱을 삭제하고 Nexus 6P를 껐습니다. 다시 켠 후 앱을 다시 설치했고 앱 권한을 부여 할 때 더 이상 “화면 오버레이”대화 상자가 나타나지 않습니다.


답변

이 팝업은 매니페스트에서 선언 한 manifest.PERMISSION.SYSTEM_ALERT_WINDOW 권한으로 인해 발생합니다 .

개발자가 알아야 할 권한의 세 가지 범주는 다음과 같습니다.

일반 권한-그들과 함께 아무것도하지 않고 Manifest에서 선언하십시오.

취약한 권한 -Manifest에서 선언하고 처음에 권한을 요청합니다. 시스템 설정을 통해 변경할 수 있습니다.

위의 위험한 권한 : SYSTEM_ALERT_WINDOWWRITE_SETTINGS 가이 범주에 속합니다. 부여해야하지만 시스템 설정에 표시되지 않습니다. 이를 요청하려면 표준 방식 (int checkSelfPermission (String permission))을 사용하지 않지만 Settings.canDrawOverlays () 또는 Settings.System.canWrite ()를 적절하게 확인해야하며 그렇게하지 않으면 다음과 같은 예외가 발생합니다.

android.view.ViewRootImpl$W@1de28ad 창을 추가 할 수 없습니다.이 창 유형에 대한 권한이 거부되었습니다.

1- 아래와 같이 코드에서 직접이 권한을 요청하십시오.

public class MainActivity extends AppCompatActivity {

public final static int REQUEST_CODE = 10000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (checkDrawOverlayPermission()) {
          Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
    }
}

public boolean checkDrawOverlayPermission() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    }
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
            Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, REQUEST_CODE);
        return false;
    } else {
        return true;
    }
}

@Override
@TargetApi(Build.VERSION_CODES.M)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (Settings.canDrawOverlays(this)) {
              Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
        }
    }
}


답변

목록에 표시되는 모든 앱에 대해 오버레이를 비활성화해야합니다. 이 방법으로 만 필요한 앱에서 권한을 수정할 수 있습니다. 나는 그것을 안전 모드에서 수행했으며 작동했습니다. 결국 나는 전화를 재부팅했고 이제는 잘 작동합니다.