2017-07-16 28 views
0

写真を撮って保存してFirebaseにアップロードしようとしていますが、何かの理由でエミュレータでこの機能を試してみると、ファイルが存在しないというメッセージを取得します。 注:ユーザーは既にカメラとストレージを許可しています。 User.pictureTakenとUser.pictureTakenNameは、パスとUUIDをただちに保存するために使用する別のクラスの静的な文字列です。カメラの写真はエミュレータでは動作しますが、実際のデバイスでは動作しません

private File getOutputMediaFile(String newUUID){ 
    if (newUUID == null) { 
     newUUID = UUID.randomUUID().toString(); 
     User.pictureTakenName = newUUID; 
    } 

    return new File(getActivity().getFilesDir(), newUUID); 
} 

は、ファイルを開こう:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

File file = getOutputMediaFile(null); 
Uri photoUri = FileProvider.getUriForFile(getActivity(), getActivity().getApplicationContext().getPackageName() + ".provider", file); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 
User.pictureTaken = file.getPath(); 
Log.d("MyTag", "URL: " + file.getPath()); 

startActivityForResult(intent, TAKE_PHOTO_CODE); 

はImagePathの行き方:

File mediaStorageDir = getOutputMediaFile(User.pictureTakenName); 
InputStream stream = new FileInputStream(mediaStorageDir); 
UploadTask uploadTask = FirebaseReferences.selfies.child(User.pictureTakenName).putStream(stream); 

をそれはそれはエラーを与えることを、ここで最後の行にの画像を撮る

その下のコードは、関連性のないものとして含まれていません。

答えて

1

内部ストレージのファイルパスを指定したので、外部ストレージパスを指定しても問題ありません。あなたは、このようgetOutputMediaFile

private File getOutputMediaFile(String newUUID){ 
    if (newUUID == null) { 
     newUUID = UUID.randomUUID().toString(); 
     User.pictureTakenName = newUUID; 
    } 

    return new File(Environment.getExternalStorageDirectory(), newUUID); 
} 

とバックこのパスから取得しよう

変更。

+0

私は現在家から離れていますが、これを試してみるとあなたに戻ってきます。すでにありがとう! –

+0

ありがとう!これはうまくいった。あなたはなぜそれが内部の記憶のために働かないか、またはそれが電話が根づいていないので、説明できますか? –

関連する問題