【发布时间】:2016-11-19 09:42:28
【问题描述】:
我的项目有问题。我想将裁剪的图像传递给其他活动。我已经完成了我的裁剪方法,但我无法获得它的真实路径。我之前搜索过如何获取路径,但我发现的所有方法都不起作用。它总是给我空路径。所以如果你们能帮助我,请回答我的问题.. 这是我的代码
public class MainActivity extends AppCompatActivity {
Button btn;
ImageView imgView;
private Uri mImageCaptureUri;
String realPath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
imgView = (ImageView) findViewById(R.id.imageView);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.putExtra("crop","true");
i.putExtra("aspectX", 1);
i.putExtra("aspectY", 1);
i.putExtra("outputX", 200);
i.putExtra("outputY", 200);
i.putExtra("return-data", true);
startActivityForResult(i,2);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && resultCode == RESULT_OK && data != null){
Uri uri = data.getData();
String type = data.getType();
Log.i("TAG", "Pick completed: " + uri + " " + type);
if (uri != null)
{
String path = uri.toString();
if (path.toLowerCase().startsWith("file://"))
{
// Selected file/directory path is below
path = (new File(URI.create(path))).getAbsolutePath();
Log.e("ini", path);
}
}
Bundle extras = data.getExtras();
Bitmap img = extras.getParcelable("data");
imgView.setImageBitmap(img);
}
}
如果我得到了真实路径,我可以使用意图传递路径并将其应用于下一个图像视图。我需要的只是路径。谢谢
【问题讨论】:
-
将 uri 传递给其他活动。
-
String path = uri.toString();。那为什么还不够好?请说出那条路的样子。还要告诉 uri.getPath() 提供什么。 -
应该是图片的绝对路径。但在我的项目中,Uri uri = data.getData();一片空白。因此,分支过程 if(uri != null) 永远不会完成。
-
直到现在你还没有告诉Bitmap img =。
-
Bitmap img = extas.getparcelable("data") 该代码将裁剪后的图像应用于位图。
标签: java android uri crop absolute-path