【问题标题】:onActivityResult resultCode returning nullonActivityResult 结果代码返回 null
【发布时间】:2019-04-23 16:37:26
【问题描述】:

这对我来说是一个非常令人失望的错误,下面是单击按钮的实现,它将选择要在我的 Firestore 中上传的图像,但结果代码为 -1。

mAddMessageImageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Select image for image message on click.
            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("image/*");
            startActivityForResult(intent, REQUEST_IMAGE);
        }
    });

最后是罪魁祸首onActivityResult

    @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Log.d(TAG, "onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);
    if (requestCode == REQUEST_IMAGE) {
        if (resultCode == RESULT_OK) {
            if (data != null) {
                final Uri uri = data.getData();
                Log.d(TAG, "Uri: " + uri.toString());
                FriendlyMessage tempMsg =
                        new FriendlyMessage(null, mUsername, mPhotoUrl, LOADING_IMAGE_URL);
                mFirebaseDatabaseReference.child(MESSAGES_CHILD)
                        .push().setValue(tempMsg, new DatabaseReference.CompletionListener() {
                    @Override
                    public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {
                        if (databaseError == null) {
                            String key = databaseReference.getKey();
                            StorageReference storageReference = FirebaseStorage.getInstance()
                                    .getReference(mFirebaseUser.getUid())
                                    .child(key)
                                    .child(uri.getLastPathSegment());
                            putImageInStorage(storageReference, uri, key);
                        } else {
                            Log.w(TAG, "Unable to write message to database.", databaseError.toException());
                        }
                    }
                });

            }
        }
    }
}

每次点击按钮都会上传占位符硬编码图像,请救救我!

【问题讨论】:

  • com.google.android.gms.tasks.zzu@6ae10e7 调用 task.getResult().getMetadata().getReference().getDownloadUrl().toString()

标签: android firebase android-intent firebase-realtime-database


【解决方案1】:

您可以尝试将其包装在 try/catch 块中:

    try {
    startActivityForResult(intent, REQUEST_IMAGE);
    return true;
} catch (ActivityNotFoundException e) {
    return false;
}

【讨论】:

  • 我刚刚看到RESULT_OK的值确实是-1
  • 还有什么问题?
【解决方案2】:

试试这个方法

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) 
{
super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_IMAGE && resultCode  == RESULT_OK) 

【讨论】:

    【解决方案3】:

    你想要一个 -1 的 resultCode,因为那是 Activity.RESULT_OK

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多