android - Android 策略的权限
问题描述
我正在使用此代码捕获屏幕。
Future<void> captureScreen() async {
WikitudeResponse captureScreenResponse = await this.architectWidget.captureScreen(true, "");
if(captureScreenResponse.success) {
showSingleButtonDialog("Success", "Image saved in: " + captureScreenResponse.message, "OK");
} else {
if(captureScreenResponse.message.contains("permission")) {
showDialogOpenAppSettings("Error", captureScreenResponse.message);
}
else {
showSingleButtonDialog("Error", captureScreenResponse.message, "Ok");
}
}
}
它显示这样的错误,
WRITE_EXTERNAL_STORAGE
写在 AndroidManifest.xml 和
Andorid设置页面中的存储权限为ON。
有什么需要检查的吗???
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
解决方案
您必须检查用户是否授予权限。为此,您可以使用以下示例代码
String[] PERMISSIONS = {android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (hasPermissions(context, PERMISSIONS)) {
// Has permission
// Do your staff
} else {
// Don't have permission
// You need to ask for permission here
}
检查权限的方法
public boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
推荐阅读
- reactjs - Storyshots - 无法读取 null 的属性“scrollWidth”
- python - Python web-scraping with login on button
- angular - Angular 8“TypeError:无法读取未定义的属性'长度'”
- c# - 如何通过引用访问索引器
- jenkins - 带有 ansicolor 的 otput 中的 Jenkins 错误 script.sh
- django - Django多个重复下拉列表
- c# - Dotnet 核心控制台应用程序 slack 机器人记录器
- gatsby - Gatsby 不会在 Markdown 中渲染图像,但其他一切都可以
- spring-boot - Assertj-Swagger PropertyType 不匹配
- node.js - 在重置密码时,如何避免来自 Feathersjs 的错误 400?