【问题标题】:load image picasso open failed: EACCES (Permission denied)加载图像毕加索打开失败:EACCES(权限被拒绝)
【发布时间】:2021-04-20 20:59:52
【问题描述】:

我想加载一张图片,但我收到了这个错误:

/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" />

【问题讨论】:

标签: java android picasso


【解决方案1】:

我刚刚将这一行添加到应用程序中:

android:requestLegacyExternalStorage="true"

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

【讨论】:

    【解决方案2】:

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

    对于 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
            );
        }
    }
    

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

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

    所以我以前有:

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

    前置:file:// 成功了

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

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

    我希望它会起作用

    【讨论】:

      【解决方案3】:

      也许您应该添加对文件系统权限的请求

      【讨论】:

      • 我有我的权限。更新了我的问题。
      【解决方案4】:

      您的清单中可能缺少以下权限,以便能够从 SD 卡中读取:

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

      【讨论】:

      • 我有我的权限。更新了我的问题。
      猜你喜欢
      • 1970-01-01
      • 2017-07-10
      • 2012-09-07
      • 2020-11-29
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多