android挑选文档,根据uri获得文档真正详细地址的

摘要: 当今部位: android挑选文档,根据uri获得文档真正详细地址的方式(适配7.0)android挑选文档,根据uri获得文档真正详细地址的方式(适配7.0)点一下频次:5581 升级时间:2017-11-301、进行挑...

当今部位: android挑选文档,根据uri获得文档真正详细地址的方式(适配7.0)
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  
嘿!编码-测算机程序编写新手入门网站,关心手机软件开发设计全新技术性,收集企业网站建设受欢迎資源。
手机软件开发设计全集,企业网站建设手册,程序猿必上的程序编写新手入门网站。 


联系我们

全国服务热线:4000-399-000 公司邮箱:343111187@qq.com

  工作日 9:00-18:00

关注我们

官网公众号

官网公众号

Copyright?2020 广州凡科互联网科技股份有限公司 版权所有 粤ICP备10235580号 客服热线 18720358503