java - 上传图片时 Firebase 存储崩溃
问题描述
我正在尝试将图像上传到 firebase 存储但徒劳无功。
当我添加上传成功的方法或应用程序崩溃但没有它们的任何其他方法时,应用程序会毫无问题地上传图像。
我确信firebase是真的。
public class add extends Activity
{
private Button button1;
private ImageView im;
private EditText edit1,edit2;
private String im_link,im_name;
public final int REQ_CD_PICK = 101;
private Intent pick = new Intent(Intent.ACTION_GET_CONTENT);
private int k;
private HashMap<String, Object> map = new HashMap<>();
private DatabaseReference post;
private StorageReference up = FirebaseStorage.getInstance().getReference("up");
private ProgressBar prog;
private Calendar date = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user);
FirebaseApp.initializeApp(this);
edit1=findViewById(R.id.edit1);
edit2=findViewById(R.id.edit2);
button1=findViewById(R.id.btn);
pick.setType("image/*");
pick.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
im=findViewById(R.id.userImageView);
post=FirebaseDatabase.getInstance().getReference().child("post");
im.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
startActivityForResult(pick, REQ_CD_PICK);
}
});
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(edit1.getText().length()<15){
edit1.setError("ادخل العنوان");
}
else if(edit2.getText().length()<50){
edit2.setError("أدخل نص المقال");
}else{
if(k>0){
edit1.setVisibility(View.GONE);
edit2.setVisibility(View.GONE);
im.setVisibility(View.GONE);
button1.setVisibility(View.GONE);
up.child(im_name).putFile(Uri.fromFile(new File(im_link)))
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final String _downloadUrl = taskSnapshot.getDownloadUrl().toString();
map = new HashMap<>();
map.put("link",_downloadUrl);
map.put("title",edit1.getText());
map.put("text",edit2.getText());
map.put("date", new SimpleDateFormat("dd/MM/yyy").format(date.getTime()));
post.updateChildren(map);
Toast.makeText(add.this,"تم النشر",Toast.LENGTH_LONG)
.show();
map.clear();
}
});
}}}});
}
@Override
protected void onActivityResult(int _requestCode, int _resultCode, Intent _data) {
super.onActivityResult(_requestCode, _resultCode, _data);
switch (_requestCode) {
case REQ_CD_PICK:
if (_resultCode == Activity.RESULT_OK) {
ArrayList<String> _filePath = new ArrayList<>();
if (_data != null) {
if (_data.getClipData() != null) {
for (int _index = 0; _index < _data.getClipData().getItemCount(); _index++) {
ClipData.Item _item = _data.getClipData().getItemAt(_index);
_filePath.add(FileUtil.convertUriToFilePath(getApplicationContext(), _item.getUri()));
}
}
else {
_filePath.add(FileUtil.convertUriToFilePath(getApplicationContext(), _data.getData()));
}
}
k = 1;
im.setImageBitmap(FileUtil.decodeSampleBitmapFromPath(_filePath.get((int)(0)), 1024, 1024));
im_link = _filePath.get((int)(0));
im_name = Uri.parse(_filePath.get((int)(0))).getLastPathSegment();
}
else {
}
break;
default:
break;
}}
}
//这是我的类路径
类路径 'com.google.gms:google-services:3.0.0'
//这是我的firebase存储
compile 'com.google.firebase:firebase-storage:11.2.0'
解决方案
推荐阅读
- terminal - Gitlab CI 管道的输出写入哪个设备?
- algorithm - 给定相似度分数的最佳匹配项目对的算法
- php - 在 1 到 100 的范围内生成 3 个唯一的随机数
- terraform - 在 Terraform 模块定义中合并地图
- vb.net - 将 WinForms 应用程序转换为类库时,对启动对象的引用失败
- sql - SQL查询,根据另一列最高值删除重复条目
- ubuntu - 无法在 Ubuntu 中卸载量角器
- reactjs - 提交 React JS 后如何删除文本区域内的文本
- javascript - Javascript Joi 替代数组或对象数组
- nagios - Nagios 密码无效