问题描述
我已经添加了管理文档权限和READ_EXTERNAL_STORAGE。我仍然得到这个错误。有问题的code:
公共静态字符串getImagePath(HailoDriverApplication应用,开放的URI){
光标光标= NULL;
如果(URI == NULL){
返回null;
}
尝试 {
光标= app.getContentResolver()查询(URI,新的String [] {
MediaStore.Images.Media.DATA
},NULL,NULL,NULL);
INT与Column_Index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
如果(cursor.moveToFirst()){
返回cursor.getString(Column_Index中);
}
} 最后 {
如果(光标!= NULL){
cursor.close();
}
}
返回null;
}
由于清单的要求片断:
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
包=com.x.x.x>
<用途-SDK
安卓的minSdkVersion =8
机器人:targetSdkVersion =16/>
<使用-权限的Android:名称=android.permission.INTERNET对/>
<使用-权限的Android:名称=android.permission.VIBRATE/>
<使用-权限的Android:名称=android.permission.ACCESS_NETWORK_STATE/>
<使用-权限的Android:名称=android.permission.ACCESS_COURSE_LOCATION/>
<使用-权限的Android:名称=android.permission.ACCESS_FINE_LOCATION/>
<使用-权限的Android:名称=android.permission.RECEIVE_BOOT_COMPLETED/>
<使用-权限的Android:名称=android.permission.WAKE_LOCK/>
<使用-权限的Android:名称=android.permission.READ_LOGS/>
<使用-权限的Android:名称=android.permission.READ_PHONE_STATE/>
<使用-权限的Android:名称=android.permission.READ_CONTACTS/>
<使用-权限的Android:名称=android.permission.CHANGE_WIFI_STATE/>
<使用-权限的Android:名称=android.permission.ACCESS_WIFI_STATE/>
<使用-权限的Android:名称=android.permission.WRITE_EXTERNAL_STORAGE/>
<使用-权限的Android:名称=android.permission.READ_EXTERNAL_STORAGE/>
<使用-权限的Android:名称=android.permission.MANAGE_DOCUMENTS/>
<使用-权限的Android:名称=android.permission.SYSTEM_ALERT_WINDOW/>
<使用-权限的Android:名称=com.google.android.providers.gsf.permission.READ_GSERVICES/>
<使用,许可
机器人:名称=android.permission.UPDATE_DEVICE_STATS
工具:忽略=ProtectedPermissions/>
<使用-权限的Android:名称=android.permission.WRITE_SETTINGS/>
<使用-权限的Android:名称=android.intent.action.BATTERY_CHANGED/>
<使用,许可
机器人:名称=android.permission.INSTALL_PACKAGES
工具:忽略=ProtectedPermissions/>
<使用-权限的Android:名称=android.permission.GET_ACCOUNTS/>
<使用-权限的Android:名称=com.google.android.c2dm.permission.RECEIVE/>
有同样的问题在过去的几天。尝试了一些解决方案,但由于某些原因,我得到允许就拒绝开放的内容提供商,甚至当我有android.permission.MANAGE_DOCUMENTS权限添加到我的清单一些图片。
下面是一个解决方法,暂时
I =新的意图(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(ⅰ,CHOOSE_IMAGE);
这迫使旧的图片库打开,而不是新的奇巧文档视图。
现在,你可以通过调用你的onActivityResult以下得到URI:
乌里selectedImageURI = data.getData();
希望这有助于。
I've added the Manage Documents permission and READ_EXTERNAL_STORAGE. I still get this error. The offending code:
public static String getImagePath(HailoDriverApplication app, Uri uri) {
Cursor cursor = null;
if (uri == null) {
return null;
}
try {
cursor = app.getContentResolver().query(uri, new String[] {
MediaStore.Images.Media.DATA
}, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
As requested snippet of manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.x.x.x" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission
android:name="android.permission.UPDATE_DEVICE_STATS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.intent.action.BATTERY_CHANGED" />
<uses-permission
android:name="android.permission.INSTALL_PACKAGES"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Had the same problem for the last couple of days. Tried a few solutions, but for some reason I was getting permission denial on Uri content provider for some images even when I had the android.permission.MANAGE_DOCUMENTS permission added to my manifest.
Here's a workaround, for the time being:
i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, CHOOSE_IMAGE);
This forces the older image gallery to open instead of the new Kitkat documents view.
Now, you can get the Uri by calling the following in your onActivityResult:
Uri selectedImageURI = data.getData();
Hope this helps.
这篇关于试图从MediaStore读取时的Android奇巧SecurityException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!