1
2
3
4
5
6
7
8 |
Intent intent= new
Intent(Intent.ACTION_GET_CONTENT); //ACTION_OPEN_DOCUMENT intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType( "image/jpeg" ); if (android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.KITKAT){ startActivityForResult(intent, SELECT_PIC_KITKAT); } else { startActivityForResult(intent, SELECT_PIC); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 |
public static String getPath( final
Context context, final
Uri uri) { final
boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; // DocumentProvider if
(isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider if
(isExternalStorageDocument(uri)) { final
String docId = DocumentsContract.getDocumentId(uri); final
String[] split = docId.split( ":" ); final
String type = split[ 0 ]; if
( "primary" .equalsIgnoreCase(type)) { return
Environment.getExternalStorageDirectory() + "/"
+ split[ 1 ]; } // TODO handle non-primary volumes } else
if (isDownloadsDocument(uri)) { // DownloadsProvider final
String id = DocumentsContract.getDocumentId(uri); final
Uri contentUri = ContentUris.withAppendedId( return
getDataColumn(context, contentUri, null , null ); } else
if (isMediaDocument(uri)) { // MediaProvider <br> final String docId = DocumentsContract.getDocumentId(uri); final
String[] split = docId.split( ":" ); final
String type = split[ 0 ]; Uri contentUri = null ; if
( "image" .equals(type)) { contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else
if ( "video" .equals(type)) { contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else
if ( "audio" .equals(type)) { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } final
String selection = "_id=?" ; final
String[] selectionArgs = new
String[] { split[ 1 ] }; return
getDataColumn(context, contentUri, selection, selectionArgs); } } else
if ( "content" .equalsIgnoreCase(uri.getScheme())) { // MediaStore (and general) // Return the remote address if
(isGooglePhotosUri(uri)) return
uri.getLastPathSegment(); return
getDataColumn(context, uri, null , null ); } else
if ( "file" .equalsIgnoreCase(uri.getScheme())) { // File<br> return uri.getPath(); } return
null ; } /** * Get the value of the data column for this Uri. This is useful for * MediaStore Uris, and other file-based ContentProviders. * * @param context The context. * @param uri The Uri to query. * @param selection (Optional) Filter used in the query. * @param selectionArgs (Optional) Selection arguments used in the query. * @return The value of the _data column, which is typically a file path. */ 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
&& cursor.moveToFirst()) { final
int index = cursor.getColumnIndexOrThrow(column); return
cursor.getString(index); } } finally
{ if
(cursor != null ) cursor.close(); } return
null ; } /** * @param uri The Uri to check. * @return Whether the Uri authority is ExternalStorageProvider. */ public
static boolean isExternalStorageDocument(Uri uri) { return
"com.android.externalstorage.documents" .equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is DownloadsProvider. */ public
static boolean isDownloadsDocument(Uri uri) { return
"com.android.providers.downloads.documents" .equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is MediaProvider. */ public
static boolean isMediaDocument(Uri uri) { return
"com.android.providers.media.documents" .equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is Google Photos. */ public
static boolean isGooglePhotosUri(Uri uri) { return
"com.google.android.apps.photos.content" .equals(uri.getAuthority()); } |
Android 4.4从图库选择图片,获取图片路径,布布扣,bubuko.com
原文:http://www.cnblogs.com/Yang2/p/3600066.html