为什么我的图片路径:/ mnt/sdcard而不是/ sdcard /?

为什么我的图片路径:/ mnt/sdcard而不是/ sdcard /?

问题描述:

在我的应用程序中,我打开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); 
    } 

你不应该硬编码在你的应用程序这条路,你可以使用下面的代码获取每个设备上正确的道路:

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

您在使用本Environment.getExternalStorageDirectory()作为访问的照片存储在外部存储器网址可能因设备而异。

+0

我只是将我的代码添加到问题,Environment.getExternalStorageDirectory()应该在哪里? – ashabasa 2013-05-07 15:30:42

+0

也许问题不在这里,你可以添加你使用的函数'public void onActivityResult',还可以添加你的子串的位置?我会修改我的答案。 – 2013-05-07 15:48:39

我认为这与具有内置的“SD卡”一些设备和做其他人在一个插槽中有一个真正的SD卡,我的外部存储路径有所不同。无论如何,您都不应使用绝对路径,请检查this question了解如何获取外部存储的路径。