2017-02-16 2 views
0

(영어로 실수를하면 사과드립니다.) 제목과 동일하게 처리해야합니다. 나는 갤러리에서 이미지를 얻는 방법 만 알고있다.갤러리에서 이미지를 가져 오는 방법, 이름을 가져 와서 내부 메모리에 저장하고 이미지의 경로를 가져 오는 것

private final int SELECT_PICTURE = 200; 

btnAddImage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent galeryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      galeryIntent.setType("image/*"); 
      startActivityForResult(galeryIntent.createChooser(galeryIntent, "Sececiona Imagen"), SELECT_PICTURE); 
     } 
    }); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode){ 
     case (SELECT_PICTURE): 
      if(requestCode == RESULT_OK){ 
       Uri path = data.getData(); 
       } 
      } 
      break; 
    } 
} 

를 (그것이 잘못하거나 비효율적 인 경우 알려 주시기 바랍니다)하지만 난이에서 잡은 이미지의 이름을 얻는 방법을 모르는 :이 올바른 생각 갤러리에 저장하고 내 앱의 내부 메모리에 그 이름을 저장합니다. 그런 다음 "MyAPP/media/..."와 같은 이미지 경로가 필요합니다. 영어로 올바른 이름을 모르며 내 데이터베이스에 저장합니다 (데이터베이스에 저장하기 쉽습니다). 그런 다음 내 프로젝트에서 사용

나는 이것이 긴 메시지라는 것을 알고 있지만 StackOverflow의 스페인어 포럼에서 누군가가 나를 대답했기 때문에 나는 당신의 도움이 필요하다고 생각합니다.

답변

0

하여 onActivityResult :

A는 파일의 이름을 가지고하는 방법입니다
String path = getPath(getApplicationContext(), data.getData());  
File mFile = new File(id); 
mFile.getName(); 

.

그리고 getPath :

public static String getPath(final Context context, final Uri uri) { 

    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 

    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { 
     if (isExternalStorageDocument(uri)) { 
      final String docId = DocumentsContract.getDocumentId(uri); 
      final String[] split = docId.split(":"); 
      final String type = split[0]; 

      Log.d("Lucas","TYPE => "+type); 

      if ("primary".equalsIgnoreCase(type)) { 
       return Environment.getExternalStorageDirectory() + "/" + split[1]; 
      } 
     } 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); 
     } 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); 
     } 
    } else if ("content".equalsIgnoreCase(uri.getScheme())) { 
     return getDataColumn(context, uri, null, null); 
    } else if ("file".equalsIgnoreCase(uri.getScheme())) { 
     return uri.getPath(); 
    } 

    return null; 
} 

public static 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; 
} 

public static boolean isExternalStorageDocument(Uri uri) { 
    return "com.android.externalstorage.documents".equals(uri.getAuthority()); 
} 

public static boolean isDownloadsDocument(Uri uri) { 
    return "com.android.providers.downloads.documents".equals(uri.getAuthority()); 
} 

public static boolean isMediaDocument(Uri uri) { 
    return "com.android.providers.media.documents".equals(uri.getAuthority()); 
} 
+0

@Isca 안드로이드는 말한다 : 해결할 수없는 방법 getPath() – ProRiderZ115

+0

@ ProRiderZ115 미안, 여기에 getPath 방법 : – lsca

+0

@Isca가 구축 해결할 수 isDocumentUri 및 getDocumentID가 밑줄입니다 빨간색 (많은 도움을 위해 thx) – ProRiderZ115

관련 문제