Android 4.4从图库选择图片,获取图片路径
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android 4.4从图库选择图片,获取图片路径,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4554字,纯文字阅读大概需要7分钟。
内容图文
![Android 4.4从图库选择图片,获取图片路径](/upload/InfoBanner/zyjiaocheng/1114/10cacf8e0ce94e018328a2956ebf1a6d.jpg)
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());
}
|
原文:http://www.cnblogs.com/Yang2/p/3600066.html
内容总结
以上是互联网集市为您收集整理的Android 4.4从图库选择图片,获取图片路径全部内容,希望文章能够帮你解决Android 4.4从图库选择图片,获取图片路径所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。