2016-07-14 30 views
0

我写这段代码和我的代码从库中选择一张图片并从中获取数据但我不知道如何从Inputstrem或数据获取图像地址并将其存储?如何从android库中获取地址

public void loadPic() 
{ 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, 1); 
} 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode==1) 
    { 
     try { 
      Uri selectedImage=data.getData(); 
      InputStream inputStream = getContentResolver().openInputStream(selectedImage); 
      listItems.add(inputStream.toString()); 
     } catch (FileNotFoundException e) { 

      e.printStackTrace(); 
     } 
    } 
} 
+0

为什么你需要从图库中选择图像的路径?你可以用'onActivityResult'回调中的Intent得到的'InputStream'完成你想做的任何事情。 –

+0

使用BitmapFactory获取位图,一致 bmp = BitmapFactory.decodeStream(inputStream); – prGD

+0

真的!我可以将它复制到另一个地方吗 – Amir133

回答

1

读取文件名称,如下所示,相应地使用它。

  Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      File f = new File(picturePath); 
      String imageName = f.getName(); 
0

我不知道这是否是你想要什么,但你可以得到这样的形象:

Uri selectedImage = data.getData(); 
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), selectedImage); 

一旦你的位图,你可以看到如何存储here它。

编辑:试试这个

 Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); 
     cursor.moveToFirst(); 
     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 
     ImageView imageView = (ImageView) findViewById(R.id.imgView); 
     imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 

here服用。

+0

我需要保存地址以备下次使用。 – Amir133

+0

检查编辑@ Amir133。让我知道如果这不起作用,或者你需要更多的帮助。 –

0

有时,您无法从您选择的图片中获取文件。 这是因为选择的来自Google+,Drive,Dropbox或任何其他提供商。

最好的解决办法是要求系统通过Intent.ACTION_GET_CONTENT选择一个内容,并将结果与​​内容提供者进行比较。

public void pickImage() { 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("image/*"); 
    startActivityForResult(intent, PICK_PHOTO_FOR_AVATAR); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == PICK_PHOTO_FOR_AVATAR && resultCode == Activity.RESULT_OK) { 
     if (data == null) { 
      //Display an error 
      return; 
     } 
     InputStream inputStream = context.getContentResolver().openInputStream(data.getData()); 
     //Now you can do whatever you want with your inpustream, save it as file, upload to a server, decode a bitmap... 
    } 
} 
+0

你的答案在“编译器”有问题说我们没有这个类,并说改为“上下文”,但什么时候显示此错误“无法从类型上下文的静态引用非静态方法getContentResolver() – Amir133