2013-05-07 37 views
0

在我的應用程序中,我打開Android默認圖庫進行選擇和圖像。結果是路徑。爲什麼我的圖片路徑:/ mnt/sdcard而不是/ sdcard /?

當我在我的手機測試應用程序,路徑是/mnt/sdcard/picturename,但是當我在collegue的手機進行測試,路徑是/sdcard/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 2013-05-07 15:27:27

+0

最後,你有沒有嘗試過上面的代碼?你有想過嗎? – 2013-05-21 00:30:32

+0

我沒有嘗試代碼,我無法弄清楚究竟在哪裏放置它。但我嘗試了另一種方法來解決我的問題。我欣賞Yoann的反饋! – ashabasa 2013-05-21 08:48:56

0

您在使用本Environment.getExternalStorageDirectory()作爲訪問的照片存儲在外部存儲器網址可能因設備而異。

+0

我只是將我的代碼添加到問題,Environment.getExternalStorageDirectory()應該在哪裏? – ashabasa 2013-05-07 15:30:42

+0

也許問題不在這裏,你可以添加你使用的函數'public void onActivityResult',還可以添加你的子串的位置?我會修改我的答案。 – 2013-05-07 15:48:39

0

我認爲這與具有內置的「SD卡」一些設備和做其他人在一個插槽中有一個真正的SD卡,我的外部存儲路徑有所不同。無論如何,您都不應使用絕對路徑,請檢查this question瞭解如何獲取外部存儲的路徑。

相關問題