uses-permission android:name="android.permission.WAKE_LOCK 权限问题

uses-permission android:name="android.permission.WAKE_LOCK permission issue

我正在我的应用程序中使用此权限,并且在所有设备和 Marhshmallow 6.0 设备中都可以正常工作。

不需要 WAKE_LOCK 权限运行时,因为它的正常权限但在 Nougat 7.0 设备中出现问题。

应用程序崩溃并发生错误 "java.lang.SecurityException: Neither user 10799 nor current process has android.permission.WAKE_LOCK" 在线 wakelock.acquire();

如何解决?

找到解决方案

据我所知,这在清单文件中就足够了

    <uses-permission android:name="android.permission.WAKE_LOCK"/>

对于屏幕连续打开写在逻辑下面

  getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

您已在 运行 时间请求许可:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
            && ContextCompat.checkSelfPermission(this, Manifest.permission.WAKE_LOCK) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WAKE_LOCK},
                REQUEST_PERMISSION);

    }


@Override
public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == REQUEST_PERMISSION) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // Permission granted.
        } else {
            // User refused to grant permission.
        }
    }
}

使用

<uses-permission android:name="android.permission.WAKE_LOCK" />

仅此而已,无需额外代码。 调用 acquire() 获取唤醒锁并强制设备保持在创建唤醒锁时请求的级别。

当您完成并且不再需要锁时调用 release()。尽快执行此操作非常重要,以避免 运行 过度耗尽设备的电池电量。

在清单末尾添加所有使用权限