【问题标题】:uses-permission android:name="android.permission.WAKE_LOCK permission issueuses-permission android:name="android.permission.WAKE_LOCK 权限问题
【发布时间】:2017-03-23 05:05:37
【问题描述】:

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

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

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

如何解决?

【问题讨论】:

  • 看看this
  • 你能发布你的androidmanifest.xml
  • 您的manifest.xml 必须包含格式错误的信息
  • 分享你的代码清单文件
  • 发布您的清单文件

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


【解决方案1】:

使用

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

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

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

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

【讨论】:

  • 这对 8.0 Android 模拟器没有帮助,在 application 之后放置 uses-permission 也是没用的。我得到unable to acquire wakeLockSecurityException: Neither user 10085 nor current process has android.permission.WAKE_LOCK
  • 我只在使用 API 30 的模拟器中收到此错误。在另一个使用 API 26 的模拟器中,它不会发生。
【解决方案2】:

找到解决办法

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

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

对于屏幕持续亮写以下逻辑

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

【讨论】:

  • 无需询问WAKE_LOCK 权限。
  • 我觉得这就够了 如果是危险权限就写上面的逻辑
  • WAKE_LOCK 有一个正常的优先级,没有危险。
  • 我认为你已经在应用程序中声明了权限,请检查一次。
  • 我不是 OP :-)
【解决方案3】:

您已在运行时请求许可:

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

【讨论】:

  • 无需询问WAKE_LOCK 许可。
猜你喜欢
  • 1970-01-01
  • 2016-12-14
  • 2012-09-20
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2016-09-17
相关资源
最近更新 更多