|
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