#android #android-intent #android-contentprovider #android-contentresolver #android-intent-chooser
#Android #android-намерение #android-contentprovider #android-contentresolver #android-intent-chooser
Вопрос:
Я не могу прочитать часть данных из Uri выбранного изображения, это происходит на каком-то конкретном устройстве Lg nexus 5 api 6.0.1
Uri выбранного изображения
content://com.google.android.apps.photos.contentprovider/-1/1/content://media/external/images/media/200/ORIGINAL/NONE/2077196451
Код, используемый для получения данных из uri
public static String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {
Cursor cursor = null;
final String column = "_data";
final String[] projection = {
column
};
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
null);
if (cursor != null amp;amp; cursor.moveToFirst()) {
final int index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(index);
}
}catch (Exception e){
e.printStackTrace();
}
finally {
if (cursor != null)
cursor.close();
}
return null;
}
Не проблема с обработкой разрешений, предоставляются необходимые разрешения.
Комментарии:
1. ваш
Uri
сломан:content://com.google.android.apps.photos.contentprovider/-1/1/content://media/external/images/media/200/ORIGINAL/NONE/2077196451
— это должно быть либоcontent://com.google.android.apps.photos.contentprovider/-1/1/
илиcontent://media/external/images/media/200/ORIGINAL/NONE/2077196451
2. Получение этого исключения
Permission Denial: reading com.google.android.apps.photos.contentprovider.impl.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/-1/1/ from pid=26928, uid=10168 requires the provider be exported, or grantUriPermission()
3. используя этот
content://media/external/images/media/200/ORIGINAL/NONE/2077196451
4. @pskink
Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT); getIntent.setType("application/pdf"); Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI).setType("image/*"); Intent chooserIntent = Intent.createChooser(getIntent, "Select File"); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {pickIntent}); activity.startActivityForResult(chooserIntent, REQUEST_PICK_FILE);