|
@@ -1,106 +1,14 @@
|
|
|
package com.compdfkit.tools.common.utils;
|
|
|
|
|
|
-import android.content.ContentUris;
|
|
|
import android.content.Context;
|
|
|
import android.database.Cursor;
|
|
|
import android.net.Uri;
|
|
|
-import android.os.Build;
|
|
|
-import android.os.Environment;
|
|
|
-import android.provider.DocumentsContract;
|
|
|
import android.provider.MediaStore;
|
|
|
+import android.text.TextUtils;
|
|
|
|
|
|
-public class CUriUtil {
|
|
|
-
|
|
|
-// public String getRealPathFromURI(Uri contentUri) {
|
|
|
-// String res = null;
|
|
|
-// String[] proj = { MediaStore.Images.Media.DATA };
|
|
|
-// Cursor cursor = 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;
|
|
|
-// }
|
|
|
-
|
|
|
- public 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];
|
|
|
- }
|
|
|
- }
|
|
|
- // 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 getDataColumn(context, uri, null, null);
|
|
|
- }
|
|
|
- // File
|
|
|
- else if ("file".equalsIgnoreCase(uri.getScheme())) {
|
|
|
- return uri.getPath();
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public String getDataColumn(Context context, Uri uri, String selection,
|
|
|
- String[] selectionArgs) {
|
|
|
-
|
|
|
- Cursor cursor = null;
|
|
|
- final String column = "_data";
|
|
|
- final String[] projection = {column};
|
|
|
+import java.io.File;
|
|
|
|
|
|
- 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;
|
|
|
- }
|
|
|
+public class CUriUtil {
|
|
|
|
|
|
public static String getUriFileName(Context context, Uri uri) {
|
|
|
|
|
@@ -125,18 +33,18 @@ public class CUriUtil {
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- public boolean isExternalStorageDocument(Uri uri) {
|
|
|
- return "com.android.externalstorage.documents".equals(uri.getAuthority());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public boolean isDownloadsDocument(Uri uri) {
|
|
|
- return "com.android.providers.downloads.documents".equals(uri.getAuthority());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public boolean isMediaDocument(Uri uri) {
|
|
|
- return "com.android.providers.media.documents".equals(uri.getAuthority());
|
|
|
+ public static String copyUriToInternalCache(Context context, Uri uri){
|
|
|
+ try{
|
|
|
+ File file = new File(context.getFilesDir(), CFileUtils.CACHE_FOLDER);
|
|
|
+ String fileName = CUriUtil.getUriFileName(context, uri);
|
|
|
+ if (TextUtils.isEmpty(fileName)){
|
|
|
+ fileName = "pic_"+System.currentTimeMillis()+".png";
|
|
|
+ }
|
|
|
+ String image = CFileUtils.copyImageToInternalDirectory(
|
|
|
+ context, uri, file.getAbsolutePath(), fileName);
|
|
|
+ return image;
|
|
|
+ }catch (Exception e){
|
|
|
+ return "";
|
|
|
+ }
|
|
|
}
|
|
|
}
|