2016-12-28 9 views
0

私は画像をキャプチャしてFirebaseにアップロードしようとしています。 問題は、私がonActivityResultdata.getData()からヌルになっていることです。data.getData()からUriを取得できません

私はウェブを見て、この場合私のために働いたものは何も見つかりませんでした。

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... } 

私はdata.geData()にnullを取得するので、私はURIに送信することはできません。

私は、BMPなどの画像を保存するように、多数の解決策を試してみましたが、これはURIを取得:

if(resultCode != RESULT_CANCELED){ 

if(data!=null) 

マニフェストを:

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...} 

は次のようにチェックを追加:

<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" /> 

成功なし。 誰でもアイデアはありますか?

+0

た電話とどのyoiuが使用しているOS? – Godwin

+0

'ACTION_IMAGE_CAPTURE'は' Uri'を返しません。 – CommonsWare

+0

私はHuawei MediaPad 10.1 Linkを使用しています – gabibrk

答えて

1

あなたは、標準のAndroidのカメラアプリを使用している場合、あなたは写真がこのような意図余分として保存したいURIを渡す必要があります。

Uri outputFileUri = Uri.fromFile(YOUR_FILE); 

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent(MediaStore.EXTRA_OUTPUT, outputFileUri); 
関連する問題