2017-03-14 9 views
0

私はFirebaseStorageからの参照を取る、私は画像のURLで値を保存したい、ここに私のコードは次のとおりです。FirebaseStorageを使用すると最終的にUriを宣言する方法は?

//FirebaseStorage 
       String path="firememes/"+ UUID.randomUUID()+".png"; 
       StorageReference firememeRef=storage.getReference(path); 

       StorageMetadata metadata=new StorageMetadata.Builder() 
         .setCustomMetadata("text","測試").build(); 

       Uri url; 
       UploadTask uploadTask=firememeRef.putBytes(bytes,metadata); 
       StorageTask<UploadTask.TaskSnapshot> taskSnapshotStorageTask = uploadTask.addOnSuccessListener(MainActivity.this, new OnSuccessListener<UploadTask.TaskSnapshot>() { 
        @Override 
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
         //it shows inner class , need to declared final 
         url = taskSnapshot.getDownloadUrl(); 
         Log.d("url>",url.toString()); 

        } 
       }); 

しかし、私は最終的に、最終的なウリのURLに変更します。最終的な変数 'url'に値を設定できません

私はurl.toStringの値を取得して保存したいのですが、Uriのグローバル変数を設定する方法を教えてください。

答えて

2

コールバックの外側ではなく、コールバック内に変数urlを定義します。

String path="firememes/"+ UUID.randomUUID()+".png"; 
StorageReference firememeRef=storage.getReference(path); 

StorageMetadata metadata=new StorageMetadata.Builder() 
     .setCustomMetadata("text","測試").build(); 

UploadTask uploadTask=firememeRef.putBytes(bytes,metadata); 
StorageTask<UploadTask.TaskSnapshot> taskSnapshotStorageTask = uploadTask.addOnSuccessListener(MainActivity.this, new OnSuccessListener<UploadTask.TaskSnapshot>() { 
    @Override 
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
     //it shows inner class , need to declared final 
     Uri url = taskSnapshot.getDownloadUrl(); 
     Log.d("url>",url.toString()); 
    } 
}); 
+0

回答ありがとうございますが、私は外部からurl値を使用したいので、変数urlをコールバックに入れたくありません。 –

+0

ファイアベースのタスクコールバックはすべて非同期です。コールバック内で作業を続行する必要があります。 –

+0

おかげで情報、私は今それを得た –

関連する問題