2013-05-07 4 views
0

내 응용 프로그램에서 Android 기본 갤러리를 열고 이미지를 선택합니다. 결과가 경로입니다.내 사진 경로가 왜/sdcard// mnt/sdcard가 아닌가요?

내 휴대폰에 응용 프로그램을 테스트 할 때, 경로 /mnt/sdcard/picturename하지만 난 내의 동료의 전화에서 테스트 할 때, 경로는 나중에 내 코드에서, 내가 문자열 방법을 사용하기 때문에 /sdcard/picturename

이이 문제가 될 것입니다 picturename 만 수집합니다. 경로에/mnt /가 포함되어 있는지 여부에 따라 결과가 다릅니다!

/sdcard/ ...으로 시작하는 경로는 어떻게 얻을 수 있습니까?

photo.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       cheminNouvellePhoto.setText("/sdcard/images/.."); 
       Intent intent = new Intent(); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       startActivityForResult(
         Intent.createChooser(intent, "Select Picture"), 101); 
      } 
     }); 

및 경로 반환 코드 :

public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 

     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 

답변

0

당신은하지 하드 코드는 응용 프로그램에서이 경로, 당신은 모든 장치에 올바른 경로를 얻기 위해 다음 코드를 사용할 수 있어야합니다

Environment.getExternalStorageDirectory() 

당신이 얻을 필요하면 사진의 이름 인 경우, 당신이 할 수있는

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == RateDayApplication.SELECT_PICTURE_DIALOG_ID) { 
     if (resultCode == getActivity().RESULT_OK) { 
      //get Uri from the intent 
      Uri selectedImageUri = data.getData(); 

      //get the image path 
      String selectedImagePath = getPath(selectedImageUri); 

      if(selectedImagePath!=null) { 
       //get the image selected 
       File photoSelected = new File(selectedImagePath); 
       //get the name of the image 
       String photoNameString = photoSelected.getName(); 
+0

그냥 내 코드를 추가했는데, 정확히 어디에 Environment.getExternalStorageDirectory()가 있어야합니까? – ashabasa

+0

마지막으로 위 코드를 시도해 보셨습니까? 알아 냈어? –

+0

코드를 시도하지 않았으므로 정확한 위치를 파악할 수 없었습니다. 하지만 내 문제를 해결하기 위해 다른 방법을 시도했다. 나는 Yoann에게 감사를 표한다 !! – ashabasa

0

당신이 Environment.getExternalStorageDirectory()는 AS 사용하여 외부 저장 장치에 사진을 액세스해야 여기

내가 갤러리를 여는 데 사용되는 코드입니다 URL은 기기마다 다를 수 있습니다.

+0

질문에 정확히 코드를 추가했는데 정확히 어디에 Environment.getExternalStorageDirectory()가 있어야합니까? – ashabasa

+0

아마도 문제가 여기에 없기 때문에 사용하는'public void onActivityResult' 함수를 추가 할 수 있습니까? 내 대답을 수정합니다. –

0

나는 그것이 일부 장치가 내장 된 'SD 카드'를 가지고와 함께 할 수 있다고 생각 : 당신이 사진 선택 활동의 결과를 얻을 때 그것을 얻을, 여기 당신이 사용할 수있는 함수의 시작입니다 슬롯에 실제 SD 카드가있는 다른 사용자는 외부 저장소에 대한 경로가 다양합니다. 어쨌든 절대 경로로 작업하지 말고 this question에서 외부 저장소 경로를 확인하십시오.