【发布时间】:2017-11-21 17:12:44
【问题描述】:
我正在尝试从手机的图库中将图像上传到 Firebase,但模拟器不断关闭并且没有记录任何错误。这是我的代码
val PICK_IMAGE_CODE=123
fun loadImage(){
var intent = Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
startActivityForResult(intent,PICK_IMAGE_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode==PICK_IMAGE_CODE && data!=null && resultCode == RESULT_OK){
val selectedImage=data.data
val filePathColum= arrayOf(MediaStore.Images.Media.DATA)
val cursor= contentResolver.query(selectedImage,filePathColum,null,null,null)
cursor.moveToFirst()
val coulomIndex=cursor.getColumnIndex(filePathColum[0])
val picturePath=cursor.getString(coulomIndex)
cursor.close()
uploadImage(BitmapFactory.decodeFile(picturePath))
}
}
var DownloadURL:String?=""
fun uploadImage(bitmap:Bitmap){
adapter!!.notifyDataSetChanged()
var currentUser = mAuth!!.currentUser
val storage= FirebaseStorage.getInstance()
val storgaRef=storage.reference
val df= SimpleDateFormat("ddMMyyHHmmss")
val dataobj= Date()
val imagePath= currentUser!!.uid+ "."+ df.format(dataobj)+ ".jpg"
val ImageRef=storgaRef.child("imagePost/"+imagePath )
val baos= ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG,100,baos)
val data= baos.toByteArray()
val uploadTask=ImageRef.putBytes(data)
uploadTask.addOnFailureListener{
Toast.makeText(applicationContext,"fail to upload", Toast.LENGTH_LONG).show()
}.addOnSuccessListener { taskSnapshot ->
DownloadURL= taskSnapshot.downloadUrl!!.toString()
ListTweets.removeAt(0)
adapter!!.notifyDataSetChanged()
}
}
如果我注释掉我对 uploadImage 的调用,模拟器不会崩溃,所以我认为我获取 picturePath 的方式有问题,但我不确定。谁能帮帮我?
【问题讨论】:
标签: firebase kotlin firebase-storage