Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用权限android:name=";android.permission.WAKE_锁定权限问题_Android_Android Permissions_Android 7.0 Nougat - Fatal编程技术网

使用权限android:name=";android.permission.WAKE_锁定权限问题

使用权限android:name=";android.permission.WAKE_锁定权限问题,android,android-permissions,android-7.0-nougat,Android,Android Permissions,Android 7.0 Nougat,我正在我的应用程序中使用此权限,并且在所有设备以及Marhshmallow 6.0设备中都能正常工作 无需WAKE_LOCK权限运行时,因为其权限正常,但在Nougat 7.0设备中出现问题 应用程序崩溃并出现错误“java.lang.SecurityException:用户10799和当前进程都没有android.permission.WAKE_LOCK”在线wakelock.acquire() 如何解决这个问题?找到解决方案 据我所知,这在清单文件中已经足够了 <uses-pe

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

无需
WAKE_LOCK
权限运行时,因为其权限正常,但在
Nougat 7.0
设备中出现问题

应用程序崩溃并出现错误
“java.lang.SecurityException:用户10799和当前进程都没有android.permission.WAKE_LOCK”
在线
wakelock.acquire()

如何解决这个问题?

找到解决方案

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

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

您已在运行时请求权限:

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


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

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


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

看一看。你能发布你的androidmanifest.xml吗?确切地说是你的
清单。xml
必须包含格式错误的信息共享你的代码清单文件发布你的清单文件不需要请求
唤醒锁定
权限。如果是这样,我认为这就足够了危险权限只写在logicWAKE_LOCK上面,优先级正常,不危险。我想你已经在应用程序中声明了权限,请检查一下。我不是OP:-)无需询问
WAKE_LOCK
权限。这对8.0 Android emulator没有帮助,同样,在
应用程序之后放置
使用权限
也是无用的。我获得
无法获取wakeLock
安全异常:用户10085和当前进程都没有android.permission.WAKE_LOCK
 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" />