在我的应用程序中,我打开Android默认库以选择和映像。结果是路径。
当我在手机中测试应用程序时,路径为/mnt/sdcard/picturename
但是当我在同事的手机中测试时,路径为/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 :(得分:0)
您应使用此Environment.getExternalStorageDirectory()
访问外部存储空间中的图片,因为网址可能因设备而异。
答案 1 :(得分: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();
答案 2 :(得分:0)
我认为它与某些具有内置'sd卡'的设备有关,而其他设备在插槽中有真正的SD卡,外部存储器的路径也各不相同。无论如何,您不应该使用绝对路径,请检查this question如何获取外部存储的路径。