android - SYSTEM_ALERT_WINDOW 的运行时权限

标签 android runtime-permissions

我需要在用户第一次打开应用时自动获取以下权限

  1. 电话
  2. 通话记录
  3. 永远在最前面

电话工作正常。如何获得永远在最前面的权限

主要 Activity

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);
}

list

<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" />

最佳答案

没有用于此目的的运行时权限/对话框,您必须将用户传递给应用程序设置

public boolean checkStartPermissionRequest() {
    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);
            return false; // above will start new Activity with proper app setting
        }
    }
    return true; // on lower OS versions granted during apk installation
}

更多信息 HERE

关于android - SYSTEM_ALERT_WINDOW 的运行时权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58604962/

相关文章:

android - 我的应用程序每个 Android 版本有多少用户

android - 红米手机运行时权限

java - 运行时权限不适用于 API 级别 28

android - 是真的吗?基于Adobe AIR的Android开发没有前途

Android 标准 ListView 项目不会在长文本上放大

android - MonoDroid Looper.MyQueue() 卡在某些 Activity/空闲处理程序上?

java - 如何在服务中使用 FirebaseListAdapter<String>?

java - 请求位置的运行时权限时

android - 如何忘记 Android M 运行时权限对话框中的 "Never ask again"选择

安卓 : Webcam Error in WebView (Camera Permission not working)