首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ByteArray to a byte[] in a intentService?

ByteArray to a byte[] in a intentService?
EN

Stack Overflow用户
提问于 2016-11-03 16:40:11
回答 1查看 252关注 0票数 0

我已经找了很远很远的答案,但我不知道该怎么做。

我试图上传图片到Firebase使用他们的教程(https://firebase.google.com/docs/storage/android/upload-files)进行存储。为此,我创建了一个IntentService来处理所有数据库调用。这是我缺钱的地方。我把我的照片从另一个类似的活动中打包;

代码语言:javascript
复制
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);
}

然后,我打开服务中的包;

代码语言:javascript
复制
@Override
protected void onHandleIntent(Intent intent) {

    extras = (Bundle) intent.getExtras().get("picture");
    uploadPicToFirebase();
    ...

然后我尝试粘贴字节数组,但是我需要将它转换为字节,而且我不知道如何在服务中。

代码语言:javascript
复制
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:字节不能为空

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 16:56:03

你弄错了钥匙:

代码语言:javascript
复制
private void uploadPicToFirebase(){

    // ...

    byte[] data = extras.getByteArray("bitmap");

    // ...

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40406921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档