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

时间:2017-03-23 05:05:37

标签: android android-permissions android-7.0-nougat

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

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

应用程序崩溃并在"java.lang.SecurityException: Neither user 10799 nor current process has android.permission.WAKE_LOCK"行{}发生错误

如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

使用

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

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

完成后调用 release(),不再需要锁定。尽快这样做是非常重要的,以避免过度耗尽设备的电池。

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

答案 1 :(得分:1)

找到解决方案

据我所知,这在Manifest文件中已经足够了

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

对于屏幕连续ON写入逻辑

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

答案 2 :(得分:-1)

您在运行时要求获得许可:

 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.
        }
    }
}