中关村在线

首页 排行 新品 问答 下载 论坛 手机 笔记本 数码相机 主板 显卡 平板电脑 更多

安卓clash怎么配置url

举报
讨论回答 (4)
lml33347
shuibanbolewodea
qingbiti070016
直接调用文件管理器选择图片即可。
1、调用系统提供的图片选择器,代码如下:
//注意,在Android4.4系统下建议使用 Intent.ACTION_OPEN_DOCUMENT方式
if (Utility.isKK()) {

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image
public static String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {

Cursor cursor = null;
final String column = "_data";
final String[] projection = {
column

};
处理返回结果:
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PIC_RESULT://选择图库
case PIC_RESULT_KK:
imageFileUri = intent.getData();//获取选择图片的URI
break;


2、除此自外,系统还提供一种选择器,这个图片选择器可以屏蔽掉那个auto backup的目录.所以就开始打算用这个图片选择器来选图片了.
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);
}
为什么要分开不同版本呢?其实在4.3或以下可以直接用ACTION_GET_CONTENT的,在4.4或以上,官方建议用ACTION_OPEN_DOCUMENT,主要区别是他们返回的Uri.4.3返回的是带文件路径的,而4.4返回的却是content://com.android.providers.media.documents/document/image:3951这样的,没有路径,只有图片编号的uri.可以通过以下方式,处理URI。
参考:Android 4.4从图库选择图片,获取图片路径并裁剪
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
}
// DownloadsProvider
else if (isDownloadsDocument(uri)) {

final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));

return getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (isMediaDocument(uri)) {
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);
}
}
// MediaStore (and general)
else if ("content".equalsIgnoreCase(uri.getScheme())) {

// Return the remote address
if (isGooglePhotosUri(uri))
return uri.getLastPathSegment();

return getDataColumn(context, uri, null, null);
}
// File
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}

return null;
}

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;
}

public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}

public static boolean isDownloadsDocument(Uri uri) {
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}

public static boolean isMediaDocument(Uri uri) {
return "com.android.providers.media.documents".equals(uri.getAuthority());
}

public static boolean isGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
}

3、使用其它开源组件如PhotoView。
ninabobo
展开查看全部 4 条讨论
相关问题

奔驰cls多媒体屏幕音乐不响是怎么回事?

1475 浏览 10 回答

金士顿Micro SD/TF卡 Class4(8GB)在相机上可以用吗?以前我买过4G的不能读卡,不知这8G能用不?

5842 浏览 9 回答

某东刚入手的闪迪class 10内存卡写入只有7M左右 求辨认真假方法 求检测软件

7.7万 浏览 7 回答

内存CL时序和电压不一样,检测后发现内存降频,如何设置让两根内存同频?设置后是否会对内存有损害?感谢!

3.6万 浏览 6 回答

Anthropic正为Claude聊天机器人开发语音功能

1.5万 浏览 6 回答

相关产品
扩展阅读

徕卡SL3-P拍摄初体验:一台性能均衡的徕卡微单旗舰

评论 16

徕卡SL3-P拍摄初体验:一台性能均衡的徕卡微单旗舰

轻巧高颜值的随身拍照神器 佳能EOS R50 V上手体验

评论 36

轻巧高颜值的随身拍照神器 佳能EOS R50 V上手体验

探访千年古寺|云南大理无为寺轻量化观鸟

评论 6

探访千年古寺|云南大理无为寺轻量化观鸟

带上尼康Z8 新加坡热带云林观鸟之旅

评论 25

带上尼康Z8 新加坡热带云林观鸟之旅

新配色及细节升级 问界M6增程版新车上市售23.98万起

评论 5

新配色及细节升级 问界M6增程版新车上市售23.98万起
热门问题

梦幻西游 怎么把金币兑换成RMB 比率是多少?

1.1万 浏览 6 回答

梦幻西游 怎么把金币兑换成RMB 比率是多少?

微信拉黑后再拉回来对方有提示吗?

3343 浏览 5 回答

微信拉黑后再拉回来对方有提示吗?

你喜欢看电影还是电视剧呢

1.9万 浏览 51 回答

你喜欢看电影还是电视剧呢

3G、4G、5G中的“G”到底是什么意思?

1.5万 浏览 6 回答

3G、4G、5G中的“G”到底是什么意思?

火影忍者同人本子,求井野那系列的,百度云等。

1.6万 浏览 4 回答

火影忍者同人本子,求井野那系列的,百度云等。

不少年轻人盛装打扮与樱花合照,你会选择哪种方式赏樱?

2万 浏览 17 回答

不少年轻人盛装打扮与樱花合照,你会选择哪种方式赏樱?

怎样预约试驾车

2942 浏览 7 回答

怎样预约试驾车

电子发票代码在哪里看

5983 浏览 6 回答

电子发票代码在哪里看

怎么把网址复制粘贴到浏览器打开

5227 浏览 6 回答

怎么把网址复制粘贴到浏览器打开

一般主持人的年收入是多少?

3435 浏览 6 回答

一般主持人的年收入是多少?
最新问答

华为换电池致主板故障

4434 浏览 9 回答

华为换电池致主板故障

忘记锁屏密码的解决方法

4265 浏览 7 回答

忘记锁屏密码的解决方法

手机热点改名需同步改密码

6073 浏览 7 回答

手机热点改名需同步改密码

Mate70标准版与Pro版对比

9024 浏览 8 回答

Mate70标准版与Pro版对比

红米手机电量异常骤降

7709 浏览 6 回答

红米手机电量异常骤降
举报
举报成功

经过核实后将会做出处理,感谢您为社区和谐做出贡献。

请选择删除原因
删除成功
确定推荐该回答?
推荐成功

更多频道

频道导航
辅助工具