從機裏取照片,開頭用網上找的代碼測試,致使相似下面這樣的Crash:
java.lang.RuntimeException: Failure delivering result
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/1909 from pid=29038, uid=10236
requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()html
好在在這裏找到解決了
http://developer.android.com/samples/StorageClient/src/com.example.android.storageclient/StorageClientFragment.html#l233java
用裏面的getBitmapFromUri方法就行:android
/** Create a Bitmap from the URI for that image and return it. * * @param uri the Uri for the image to return. */ private Bitmap getBitmapFromUri(Uri uri) { ParcelFileDescriptor parcelFileDescriptor = null; try { parcelFileDescriptor = getActivity().getContentResolver().openFileDescriptor(uri, "r"); FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); parcelFileDescriptor.close(); return image; } catch (Exception e) { Log.e(TAG, "Failed to load image.", e); return null; } finally { try { if (parcelFileDescriptor != null) { parcelFileDescriptor.close(); } } catch (IOException e) { e.printStackTrace(); Log.e(TAG, "Error closing ParcelFile Descriptor"); } } }