[英]get real path from URI of type data.getData() file:///storage/emulated/0/LenovoReaper/did
[英]Can't get Uri from data.getData()
我正在尝试捕获图像并将其上传到Firebase
。 问题是我从onActivityResult
中的data.getData()
获取空值。
我看了看网络,在这种情况下找不到适合我的东西。
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_REQUEST_CODE);
}
这是onActivityResult
:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri uri = data.getData();
StorageReference filePath = storageRef.child("labelPhoto").child(uri.getLastPathSegment())
filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
....rest of the code... }
我无法发送到uri,因为data.geData()
空;
我尝试了多种解决方案,例如将图像保存为bmp并获取此uri:
Bitmap bitmap= (Bitmap)data.getExtras().get("data");
captureImage.setImageBitmap(bitmap);
String mPath = Environment.getExternalStorageDirectory().toString() + "/Pictures/" + picName + ".jpg";
File imageFile = new File(mPath);
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.flush();
outputStream.close();
String temp = Environment.getExternalStorageDirectory().getPath() + "/Pictures/";
uri= Uri.fromFile(imageFile);
Log.d("TAG", uri.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
java.net.URI javaUri = java.net.URI.create(uri.toString());
android.net.Uri androidUri = android.net.Uri.parse(uri.toString());
StorageReference filePath = storageRef.child("labelPhoto").child(androidUri.toString());
filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
....rest of the code...}
添加如下检查:
if(resultCode != RESULT_CANCELED){
和
if(data!=null)
清单:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
没有任何成功。 有人有主意吗?
如果您使用的是标准的Android相机应用程序,则应将想要存储照片的URI传递为这样的意图:
Uri outputFileUri = Uri.fromFile(YOUR_FILE);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent(MediaStore.EXTRA_OUTPUT, outputFileUri);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.