1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android调用系统自带的文件管理器 打开指定路径

Android调用系统自带的文件管理器 打开指定路径

时间:2023-06-29 09:26:39

相关推荐

Android调用系统自带的文件管理器 打开指定路径

一、打开系统自带的文件管理器

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {showToast(R.string.msg_storage_nosdcard);return;}//获取文件下载路径String compName = AppString.getCompanyName();String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + compName + "/OSC_DATA/";File dir = new File(path);if (!dir.exists()) {dir.mkdirs();}//调用系统文件管理器打开指定路径目录Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setDataAndType(Uri.fromFile(dir.getParentFile()), "file/*.txt");intent.addCategory(Intent.CATEGORY_OPENABLE);startActivityForResult(intent, REQUEST_CHOOSEFILE);

@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data){//选择文件返回super.onActivityResult(requestCode,resultCode,data);if(resultCode==RESULT_OK){switch(requestCode){case REQUEST_CHOOSEFILE:Uri uri=data.getData();chooseFilePath=FileChooseUtil.getInstance(this).getChooseFileResultPath(uri);Log.d(TAG,"选择文件返回:"+chooseFilePath);sendFileMessage(chooseFilePath);break;}}}

二、工具类FileChooseUtil

public class FileChooseUtil {private Context context;private static FileChooseUtil util = null;private FileChooseUtil(Context context) {this.context = context;}public static FileChooseUtil getInstance(Context context) {if (util == null) {util = new FileChooseUtil(context);}return util;}/*** 对外接口 获取uri对应的路径** @param uri* @return*/public String getChooseFileResultPath(Uri uri) {String chooseFilePath = null;if ("file".equalsIgnoreCase(uri.getScheme())) {//使用第三方应用打开chooseFilePath = uri.getPath();Toast.makeText(context, chooseFilePath, Toast.LENGTH_SHORT).show();return chooseFilePath;}if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {//4.4以后chooseFilePath = getPath(context, uri);} else {//4.4以下下系统调用方法chooseFilePath = getRealPathFromURI(uri);}return chooseFilePath;}private String getRealPathFromURI(Uri contentUri) {String res = null;String[] proj = {MediaStore.Images.Media.DATA};Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);if (null != cursor && cursor.moveToFirst()) {int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);res = cursor.getString(column_index);cursor.close();}return res;}/*** 专为Android4.4设计的从Uri获取文件绝对路径,以前的方法已不好使*/@SuppressLint("NewApi")private String getPath(final Context context, final Uri uri) {final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;// DocumentProviderif (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {// ExternalStorageProviderif (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];}}// DownloadsProviderelse 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);}// MediaProviderelse 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 getDataColumn(context, uri, null, null);}// Fileelse if ("file".equalsIgnoreCase(uri.getScheme())) {uri.getPath();}return null;}private 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 column_index = cursor.getColumnIndexOrThrow(column);return cursor.getString(column_index);}} finally {if (cursor != null)cursor.close();}return null;}/*** @param uri The Uri to check.* @return Whether the Uri authority is ExternalStorageProvider.*/private 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.*/private 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.*/private boolean isMediaDocument(Uri uri) {return "com.android.providers.media.documents".equals(uri.getAuthority());}}

完!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。