首页 > 解决方案 > 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" />

标签: androidflutterwikitude

解决方案


您必须检查用户是否授予权限。为此,您可以使用以下示例代码

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

推荐阅读