Разрешение времени выполнения для SYSTEM_ALERT_WINDOW - PullRequest
0 голосов
/ 29 октября 2019

Мне нужно автоматически получать разрешения пользователя для следующих разрешений, пока пользователь впервые открывает приложение

  1. Телефон
  2. Журналы вызовов
  3. Всегда сверху

Телефон работает нормально. Как получить разрешение всегда на вершине

MainActivity

protected void onCreate(Bundle savedInstanceState) {
    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SYSTEM_ALERT_WINDOW)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW}, 1);
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

Манифест

<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

1 Ответ

3 голосов
/ 29 октября 2019

для этой цели нет разрешения / диалогового окна времени выполнения, вам необходимо передать пользователю настройки приложения

public void checkPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
    }
}
}

из здесь

...