2016-11-10 104 views
-1

我尝试添加Bitmap照片,我拿着手机在Android Studio中的画廊,但我得到的错误:将照片保存到Android图库

Failed to insert image 
    java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=4110, uid=10058 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission() 

我在清单XML使用:

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

的方式,我将图像保存为:

MediaStore.Images.Media.insertImage(getContentResolver(), FullBitmap, "Name" , "Date"); 

我使用的是Nexus 5的仿真器和一个droid版本5.1。

+0

您确定它是Android 5.1而不是6.0吗?因为只从棉花糖开始,你可以单独拒绝许可 –

+2

'android:maxSdkVersion =“21”'为什么?你的设备是API 22。 – njzk2

回答

2

正如@ n​​jzk2所指出的,不要使用android:maxSdkVersion属性。此属性适用于不再需要更高API级别的权限。文档中给出的示例是您应该应用此属性的几个原因之一:

For example, beginning with Android 4.4 (API level 19), it's no longer necessary for your app to request the WRITE_EXTERNAL_STORAGE permission when your app wants to write to its own application-specific directories on external storage (the directories provided by getExternalFilesDir()). However, the permission is required for API level 18 and lower.

对于您的情况,您正在访问公用目录;为此你需要需要WRITE_EXTERNAL_STORAGE所有API级别的权限。

相关问题