加载图像毕加索打开失败:EACCES权限被拒绝

问题描述

我想加载图像,但出现此错误

/storage/emulated/0/productss/Montearci_products/Bracelets/airplane/Brac - 020.jpg: open Failed: EACCES (Permission denied)

文件已存在。 我的代码

  Picasso.get().setLoggingEnabled(true);
  Picasso.get().load(muri).into(mimg);

我的安卓版本是 10。

我的权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

解决方法

我刚刚在应用程序中添加了这一行:

android:requestLegacyExternalStorage="true"

我不知道,但对于 android 10 应该添加它!

,

您应该注意的第一个选项是权限 -

对于 API 23+,您需要请求读/写权限,即使它们已经在您的清单文件中,因为这些被认为是危险的权限

// Storage Permissions

private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE
};

/**
 * Checks if the app has permission to write to device storage
 *
 * If the app does not has permission then the user will be prompted to grant permissions
 *
 *
 */
public static void verifyStoragePermissions(Activity activity) {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity,Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE
        );
    }
}

您可以尝试的第二个选项是:-

根据毕加索文档,您必须执行以下操作:file:///android_asset/DvpvklR.png

所以我曾经有:

/storage/sdcard/Pictures/findyoursport/yoursport_1482358052384.jpeg

前置:file:// 成功

第三 - 如果您在 Android 10 或更高版本上运行此程序,请使用此程序->

<manifest ... >
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>

我希望它会奏效

,

也许你应该添加文件系统权限请求

,

您可能缺少 Manifest 中的以下权限才能读取 SD 卡:

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