android挑选文档,根据uri获得文档真正详细地址的
摘要: 当今部位: android挑选文档,根据uri获得文档真正详细地址的方式(适配7.0)android挑选文档,根据uri获得文档真正详细地址的方式(适配7.0)点一下频次:5581 升级时间:2017-11-301、进行挑...
android挑选文档,根据uri获得文档真正详细地址的方式(适配7.0) 点一下频次:5581 升级时间:2017-11-30
1、进行挑选文档的恳求
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType( */* intent.addCategory(Intent.CATEGORY_OPENABLE); Activity_PhotoRead.this.startActivityForResult(Intent.createChooser(intent, 挑选文档 ), 10000);
2、Activity中获得选定文档的uri
@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 10000) { Uri uri = intent.getData(); String path1 = FileHelper.getFilePath(this, uri);// 将uri变为真正详细地址 }
3、将uri变为真正详细地址(已根据android7.0检测)
public static String getFilePath(Context context, Uri uri) { if ( content .equalsIgnoreCase(uri.getScheme())) { int sdkVersion = Build.VERSION.SDK_INT; if (sdkVersion = 19) { // api = 19 return getRealPathFromUriAboveApi19(context, uri); } else { // api 19 return getRealPathFromUriBelowAPI19(context, uri); } } else if ( file .equalsIgnoreCase(uri.getScheme())) { return uri.getPath(); } return null; } * 兼容api19下列(不包含api19),依据uri获得照片的肯定相对路径 * * @param context 左右文目标 * @param uri 照片的Uri * @return 假如Uri相匹配的照片存有, 那麼回到该照片的肯定相对路径, 不然回到null */ private static String getRealPathFromUriBelowAPI19(Context context, Uri uri) { return getDataColumn(context, uri, null, null); } /** * 获得数据信息库表格中的 _data 列,即回到Uri相匹配的文档相对路径 * @return */ private static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { String path = null; String[] projection = new String[]{MediaStore.Images.Media.DATA}; Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null cursor.moveToFirst()) { int columnIndex = cursor.getColumnIndexOrThrow(projection[0]); path = cursor.getString(columnIndex); } } catch (Exception e) { if (cursor != null) { cursor.close(); } } return path; }
* @param context 左右文目标 * @param uri 照片的Uri * @return 假如Uri相匹配的照片存有, 那麼回到该照片的肯定相对路径, 不然回到null */ @SuppressLint( NewApi ) private static String getRealPathFromUriAboveApi19(Context context, Uri uri) { String filePath = null; if (DocumentsContract.isDocumentUri(context, uri)) { // 假如是document种类的 uri, 则根据document id来开展解决 String documentId = DocumentsContract.getDocumentId(uri); if (isMediaDocument(uri)) { // MediaProvider // 应用 : 切分 String id = documentId.split( : )[1]; String selection = MediaStore.Images.Media._ID + =? String[] selectionArgs = {id}; filePath = getDataColumn(context, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection, selectionArgs); } else if (isDownloadsDocument(uri)) { // DownloadsProvider Uri contentUri = ContentUris.withAppendedId(Uri.parse( content://downloads/public_downloads ), Long.valueOf(documentId)); filePath = getDataColumn(context, contentUri, null, null); } } else if ( content .equalsIgnoreCase(uri.getScheme())){ // 假如是 content 种类的 Uri filePath = getDataColumn(context, uri, null, null); } else if ( file .equals(uri.getScheme())) { // 假如是 file 种类的 Uri,立即获得照片相匹配的相对路径 filePath = uri.getPath(); } return filePath; } /** * @param uri the Uri to check * @return Whether the Uri authority is MediaProvider */ private 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 DownloadsProvider */ private static boolean isDownloadsDocument(Uri uri) { return com.android.providers.downloads.documents .equals(uri.getAuthority()); }
2016 嘿!编码 copy right
嘿!编码-测算机程序编写新手入门网站,关心手机软件开发设计全新技术性,收集企业网站建设受欢迎資源。
手机软件开发设计全集,企业网站建设手册,程序猿必上的程序编写新手入门网站。