Android 文件的选择
打开文件选择器
private void showFileChooser() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType( "*/*" ); intent.addCategory(Intent.CATEGORY_OPENABLE); try { startActivityForResult( Intent.createChooser(intent, "Select a File to Upload" ), FILE_SELECT_CODE); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText( this , "Please install a File Manager." , Toast.LENGTH_SHORT).show(); } } |
选择的结果
@Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { switch (requestCode) { case FILE_SELECT_CODE: if (resultCode == RESULT_OK) { // Get the Uri of the selected file Uri uri = data.getData(); String path = FileUtils.getPath( this , uri); } break ; } super .onActivityResult(requestCode, resultCode, data); } |
FileUtils文件
public class FileUtils { public static String getPath(Context context, Uri uri) { if ( "content" .equalsIgnoreCase(uri.getScheme())) { String[] projection = { "_data" }; Cursor cursor = null ; try { cursor = context.getContentResolver().query(uri, projection, null , null , null ); int column_index = cursor.getColumnIndexOrThrow( "_data" ); if (cursor.moveToFirst()) { return cursor.getString(column_index); } } catch (Exception e) { // Eat it } } else if ( "file" .equalsIgnoreCase(uri.getScheme())) { return uri.getPath(); } return null ; } } |
这个很简单。
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
2011-08-19 (收藏)《博客园精华集》分类索引
2011-08-19 31 天重构学习笔记索引