android - Kotlin 将图像和描述上传到 Firebase
问题描述
我正在尝试将手机图库中的图片和图片的简短描述上传到 Firebase。当我单击“添加帖子”按钮时,它应该将我发送到我选择图像的画廊,然后,它需要描述并且可以发布。问题是,当我单击“添加帖子”按钮时,它不会打开厨房,但会显示“没有应用程序可以执行此操作”
块引用
包 com.giveandshareauth
导入 androidx.appcompat.app.AppCompatActivity
类 PostActivity : AppCompatActivity() {
private var myUrl = ""
private var imageUri: Uri? = null
private var storagePostImages: StorageReference? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_post)
storagePostImages = FirebaseStorage.getInstance().reference.child("Post Pictures")
save_post_btn.setOnClickListener{ uploadImage()}
CropImage.activity()
.setAspectRatio(2, 1)
.start(this)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == Activity.RESULT_OK && data != null)
{
val result = CropImage.getActivityResult(data)
imageUri = result.uri
PostImage.setImageURI(imageUri)
}
}
private fun uploadImage() {
when
{
imageUri == null -> Toast.makeText(this, "Please select image first.", Toast.LENGTH_LONG).show()
TextUtils.isEmpty(PostInfo.text.toString()) -> Toast.makeText(this, "Please write description.", Toast.LENGTH_LONG).show()
else -> {
val progressDialog = ProgressDialog(this)
progressDialog.setTitle("Upload Post")
progressDialog.setMessage("Please wait, we are uploading your post...")
progressDialog.show()
val fileRef = storagePostImages!!.child(System.currentTimeMillis().toString() + ".jpg") //GetFile Extention Buiding Function Kotlin!
var uploadTask: StorageTask<*>
uploadTask = fileRef.putFile(imageUri!!)
uploadTask.continueWithTask(Continuation <UploadTask.TaskSnapshot, Task<Uri>>{ task ->
if (!task.isSuccessful)
{
task.exception?.let {
throw it
progressDialog.dismiss()
}
}
return@Continuation fileRef.downloadUrl
}).addOnCompleteListener (OnCompleteListener<Uri> { task ->
if (task.isSuccessful)
{
val downloadUrl = task.result
myUrl = downloadUrl.toString()
val ref = FirebaseDatabase.getInstance().reference.child("Posts")
val postId = ref.push().key
val postMap = HashMap<String, Any>()
postMap["postid"] = postId!!
postMap["publisher"] = PostInfo.text.toString().toLowerCase()
postMap["description"] = FirebaseAuth.getInstance().currentUser!!.uid
postMap["postimage"] = myUrl
ref.child(postId).updateChildren(postMap)
Toast.makeText(this, "GiveAway has been updated successfully.", Toast.LENGTH_LONG).show()
val intent = Intent(this@PostActivity, LoginActivity::class.java)
startActivity(intent)
progressDialog.dismiss()
}
else
{
progressDialog.dismiss()
}
} )
}
}
}
}
解决方案
推荐阅读
- html - Bootstrap 4 模态出现在背景后面(Django 应用程序)
- c++ - 在 Mac 上启用 GLSL 3.3
- python-3.x - Pygame没有加载图像
- java - 带有数组的新枚举
- node.js - Angular 到 Node + Express.js http.post() 停止:状态 204 无内容。疑似 CORS 预检选项
- functional-programming - 获取列表的第一个元素作为 Maybe vs Maybe 元素
- c# - 是否有任何框架或组件可以在 EF Core/ASP.Net Core 中构建复杂类型?
- wordpress - 重新加载时的自定义 Wordpress 模板页面不显示任何内容,但源代码都在那里
- opengl - 在OpenGL中旋转后沿着它的前轴平移相机?
- sql - 如何使用 postgresql 转换表