1
我正在開發一個應用程序,我將拍照並將其張貼到我的Firebase數據庫以及一些說明。我寫了一些代碼,但是當我拍照並點擊確定按鈕時,應用程序崩潰。如何使用android將照片從相機發布到Firebase數據庫
下面是我的代碼:
的錯誤是view crush error
package com.example.user.potholereportingapp;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.theartofdev.edmodo.cropper.CropImage;
import com.theartofdev.edmodo.cropper.CropImageView;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.Date;
import static android.app.Activity.RESULT_OK;
import static android.app.Activity.RESULT_OK;
import static android.app.Activity.RESULT_OK;
import static android.app.Activity.RESULT_OK;
import static android.app.Activity.RESULT_OK;
import static android.app.Activity.RESULT_OK;
public class PostActivity extends AppCompatActivity {
private ImageButton mSelectImage;
private EditText mPostTitle;
private EditText mPostDesc;
private Button mSubmitBtn;
private Uri photo=null;
private StorageReference mStorage;
private DatabaseReference mDatabase;
private ProgressDialog mProgress;
static final int CAM_REQUEST=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
mStorage= FirebaseStorage.getInstance().getReference();
mDatabase= FirebaseDatabase.getInstance().getReference().child("Blog");
mProgress=new ProgressDialog(this);
mSelectImage=(ImageButton) findViewById(R.id.imageSelect);
mPostTitle=(EditText)findViewById(R.id.titleField);
mPostDesc=(EditText)findViewById(R.id.descField);
mSubmitBtn=(Button)findViewById(R.id.submitBtn);
mSelectImage.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, CAM_REQUEST);
}
}
});
mSubmitBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
startPosting();
}
});
}
private void startPosting() {
mProgress.setMessage("Posting Image...");
mProgress.show();
final String title_val = mPostTitle.getText().toString().trim();
final String desc_val = mPostDesc.getText().toString().trim();
if(!TextUtils.isEmpty(title_val)&&!TextUtils.isEmpty(desc_val) && photo != null){
mProgress.show();
StorageReference filepath = mStorage.child("Blog_Images").child(photo.getLastPathSegment());
filepath.putFile(photo).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl =taskSnapshot.getDownloadUrl();
DatabaseReference newPost = mDatabase.push();
newPost.child("title").setValue(title_val);
newPost.child("desc").setValue(desc_val);
newPost.child("image").setValue(downloadUrl.toString());
mProgress.dismiss();
startActivity(new Intent(PostActivity.this,MainActivity.class));
}
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==CAM_REQUEST && resultCode==RESULT_OK) {
photo = data.getData();
mSelectImage.setImageURI(photo);
CropImage.activity(photo)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
mSelectImage.setImageURI(resultUri);
photo= resultUri;
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
}
安置自己的堆棧跟蹤。 – Piyush
@ Piyush,我添加了我得到的暗戀錯誤的屏幕截圖 – baswetimichael
您是否在清單文件中添加了讀寫外部存儲權限? – Piyush