imagesをFirebase StorageにアップロードするにはStorageReferenceのインスタンスにaddOnSuccessListener
をアタッチしています。 onSuccess
メソッドをオーバーライドしているときに、taskSnapshot
のインスタンスでgetDownloadUrl()
を呼び出していますが、次のようなエラーが表示されます。
メソッドgetDownloadUrl()を解決できません
2か月前に作成したこのアプリは、以前はこのアプリが正常に機能しており、getDownloadUrl()
も正常に機能していました。また、taskSnapshot
インスタンスでCtrl + spaceを押すと、提案ではgetDownloadUrl()
が見つかりません方法。なぜそれが起こっているのですか?
onActivityResult()
へのコード:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_SIGN_IN) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, "Signed in!!!1", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Failed to sign in", Toast.LENGTH_SHORT).show();
finish();
}
}
else if(requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK){
Uri selectedPhoto = data.getData();
StorageReference localRefrence = storageReference.child(selectedPhoto.getLastPathSegment());
// Uploading the file on the storage
localRefrence.putFile(selectedPhoto).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl = taskSnapshot.getDownloadUrl();
FriendlyMessage message = new FriendlyMessage(mUsername, null, downloadUrl.toString());
databaseReference.Push().setValue(message);
}
});
}
}
Firebase APIの が変更されました 。
2018年5月23日
Cloud Storageバージョン16.0.1
非推奨のStorageMetadata.getDownloadUrl()およびUploadTask.TaskSnapshot.getDownloadUrl()メソッドを削除しました。現在のダウンロードURLを取得するには、StorageReference.getDownloadUr()を使用します。
UploadTask.TaskSnapshot
には、StorageMetadata
オブジェクトを返す getMetadata()
という名前のメソッドがあります。
この StorageMetadata
オブジェクトには、StorageReference
オブジェクトを返す getReference()
という名前のメソッドが含まれています。
その StorageReference
オブジェクトには getDownloadUrl()
メソッドが含まれており、Uriの代わりにTaskオブジェクトを返すようになりましたオブジェクト。
Uriを取得するには、このタスクをリッスンする必要があります。これは、非同期またはブロック方式で実行できます。 Tasks API を参照してください。
final StorageReference filePath = mImageStore.child("profile_images").child("full_image").child(userId + ".jpg");
filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
//Bitmap hochladen
uploadBitMap(uri.toString());
}
});
現在使用している画像のダウンロードURLは取得できません
profileImageUrl = taskSnapshot .getDownloadUrl()。toString();このメソッドは非推奨です。
代わりに、以下の方法を使用できます
uniqueId = UUID.randomUUID().toString();
ur_firebase_reference = storageReference.child("user_photos/" + uniqueId);
Uri file = Uri.fromFile(new File(mphotofile.getAbsolutePath()));
UploadTask uploadTask = ur_firebase_reference.putFile(file);
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return ur_firebase_reference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
System.out.println("Upload " + downloadUri);
Toast.makeText(mActivity, "Successfully uploaded", Toast.LENGTH_SHORT).show();
if (downloadUri != null) {
String photoStringLink = downloadUri.toString(); //YOU WILL GET THE DOWNLOAD URL HERE !!!!
System.out.println("Upload " + photoStringLink);
}
} else {
// Handle failures
// ...
}
}
});
_.getDownloadURL
_は使用できなくなり、廃止されました。ドキュメントから_Task<Uri>
_およびgetdownloadUrl();
失効可能なトークンを使用して、長期間有効なダウンロードURLを非同期に取得します。 ドキュメント を参照してください
_ @Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
while (!urlTask.isSuccessful());
Uri downloadUrl = urlTask.getResult();
//continue with your code
_
これを試してみてください。それを理解し、あなたに実装してみてください
buttonSetup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = editText_name.getText().toString();
if (!TextUtils.isEmpty(name) && mainImageURI != null) {
final String user_id = firebaseAuth.getCurrentUser().getUid();
progressBar_setup.setVisibility(View.VISIBLE);
final StorageReference image_path = storageReference.child("profile_images").child(user_id + ".jpg");
UploadTask uploadTask = image_path.putFile(mainImageURI);
uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if(!task.isSuccessful()){
throw task.getException();
}
return image_path.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()){
Uri downloadUrl = task.getResult();
Log.i("The URL : ", downloadUrl.toString());
}
}
});
}
}
});
GetDownloadUrlメソッドは廃止されました。代わりに、次を使用してくださいtaskSnapshot.getMetadata()。getReference()。getDownloadUrl()。toString()