问题
I want to load an image but I got this error:
/storage/emulated/0/productss/Montearci_products/Bracelets/airplane/Brac - 020.jpg: open failed: EACCES (Permission denied)
The file is exist. My codes:
Picasso.get().setLoggingEnabled(true);
Picasso.get().load(muri).into(mimg);
my android version is 10.
my permissions:
<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" />
回答1:
I just added this line to application:
android:requestLegacyExternalStorage="true"
I don't know but for android 10 it should be added !
回答2:
Maybe you should add request for FileSystem permission
回答3:
You might be missing the following permissions in your Manifest to be able to read from SD Card:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
回答4:
First Option that you should take care of is Permision -
For API 23+ you need to request the read/write permissions even if they are already in your manifest file cause these are considered dangerous permissions
// 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
);
}
}
Second Option that you can try is :-
According to Picasso docs you have to do something like this: file:///android_asset/DvpvklR.png
So I used to have:
/storage/sdcard/Pictures/findyoursport/yoursport_1482358052384.jpeg
Prepending: file:// did the trick
Third - If you're running this on Android 10 or higher then use this->
<manifest ... >
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
</manifest>
I hope it will work
来源:https://stackoverflow.com/questions/65742742/load-image-picasso-open-failed-eacces-permission-denied