我已经找了很远很远的答案,但我不知道该怎么做。
我试图上传图片到Firebase使用他们的教程(https://firebase.google.com/docs/storage/android/upload-files)进行存储。为此,我创建了一个IntentService来处理所有数据库调用。这是我缺钱的地方。我把我的照片从另一个类似的活动中打包;
public void sendToFB() {
mImageView.setDrawingCacheEnabled(true);
mImageView.buildDrawingCache();
Bitmap bitmap = mImageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
Bundle bundle = new Bundle();
bundle.putByteArray("bitmap", data);
Intent intent = new Intent(this, FirebaseService.class);
intent.putExtra("picture", bundle);
this.startService(intent);
}然后,我打开服务中的包;
@Override
protected void onHandleIntent(Intent intent) {
extras = (Bundle) intent.getExtras().get("picture");
uploadPicToFirebase();
...然后我尝试粘贴字节数组,但是我需要将它转换为字节,而且我不知道如何在服务中。
private void uploadPicToFirebase() {
// Get the data from an ImageView as bytes
/*mImageView.setDrawingCacheEnabled(true);
mImageView.buildDrawingCache();
Bitmap bitmap = mImageView.getDrawingCache();
*/
//Bundle extras = getIntent().getExtras();
byte[] data = extras.getByteArray("picture");
UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
System.out.println("not ok");
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
System.out.println("helt ok");
Uri downloadUrl = taskSnapshot.getDownloadUrl();
}
});
}当然,它以IllegalArgumentException结尾
java.lang.IllegalArgumentException:字节不能为空
发布于 2016-11-03 16:56:03
你弄错了钥匙:
private void uploadPicToFirebase(){
// ...
byte[] data = extras.getByteArray("bitmap");
// ...
}https://stackoverflow.com/questions/40406921
复制相似问题