udacity / and-nd-firebase

Course code repository for Firebase in a Weekend by Google: Android
https://www.udacity.com/course/firebase-in-a-weekend-by-google-android--ud0352
Apache License 2.0
299 stars 714 forks source link

Uri url = taskSnapshot.getDownloadUrl(); #49

Open leandro12almeida opened 5 years ago

leandro12almeida commented 5 years ago

estou com problema meu codigo whastapp clone esta dando erro Uri url = taskSnapshot.getDownloadUrl(); salva foto banco faribase nao fixa foto perfil whastapp clone

package br.com.whatsappandroid.android.whatsapp.activity;

import android.Manifest;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.graphics.Bitmap;

import android.net.Uri;

import android.os.Bundle;

import android.provider.MediaStore;

import android.support.annotation.NonNull;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.widget.ImageButton;

import android.widget.Toast;

import com.bumptech.glide.Glide;

import com.google.android.gms.tasks.OnFailureListener;

import com.google.android.gms.tasks.OnSuccessListener;

import com.google.firebase.auth.FirebaseUser;

import com.google.firebase.storage.StorageReference;

import com.google.firebase.storage.UploadTask;

import java.io.ByteArrayOutputStream;

import br.com.whatsappandroid.android.whatsapp.R;

import br.com.whatsappandroid.android.whatsapp.config.ConfiguracaoFirebase;

import br.com.whatsappandroid.android.whatsapp.helper.UsuarioFirebase;

import br.com.whatsappandroid.android.whatsapp.helper.permissao;

import de.hdodenhof.circleimageview.CircleImageView;

public class ConfiguracoesActivity extends AppCompatActivity {

private String[] permissoesNecessarias = new String[]{

        Manifest.permission.READ_EXTERNAL_STORAGE,

        Manifest.permission.CAMERA

};

private ImageButton imageButtonCamera, imageButtonGaleria;

private static final int SELECAO_CAMERA  = 100;

private static final int SELECAO_GALERIA = 200;

private CircleImageView circleImageViewPerfil;

private StorageReference StorageReference;

private  String identificadorUsuario;

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_configuracoes);

    //Configuraçoes iniciais

    StorageReference = ConfiguracaoFirebase.getFirebasesStorage();

    identificadorUsuario = UsuarioFirebase.getIdentificadorUsuario();

    //Validar permissões

    permissao.validarPermissoes(permissoesNecessarias, this, 1);

    imageButtonCamera  = findViewById(R.id.imageButtonCamara);

    imageButtonGaleria = findViewById(R.id.imageButtonGaleria);

    circleImageViewPerfil = findViewById(R.id.CircleImageViewFotoPerfil);

    Toolbar toolbar = findViewById(R.id.toolbarPrincipal);

    toolbar.setTitle("Configurações");

    setSupportActionBar( toolbar );

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //Recuperar dados do Usuário

    FirebaseUser usuario = UsuarioFirebase.getUsuarioAtual();

    Uri url =  usuario.getPhotoUrl();

    if ( url != null ) {

        Glide.with(ConfiguracoesActivity.this)

                .load( url)

                .into(circleImageViewPerfil);

    }else {

        circleImageViewPerfil.setImageResource(R.drawable.padrao);

    }

    imageButtonCamera.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            if ( i.resolveActivity(getPackageManager()) != null ){

                startActivityForResult(i, SELECAO_CAMERA );

            }

        }

    });

    imageButtonGaleria.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI );

            if ( i.resolveActivity(getPackageManager()) != null ){

                startActivityForResult(i, SELECAO_GALERIA );

            }

        }

    });

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if ( resultCode == RESULT_OK ){

        Bitmap imagem = null;

        try {

            switch ( requestCode ){

                case SELECAO_CAMERA:

                    imagem = (Bitmap) data.getExtras().get("data");

                    break;

                case SELECAO_GALERIA:

                    Uri localImagemSelecionada = data.getData();

                    imagem = MediaStore.Images.Media.getBitmap(getContentResolver(), localImagemSelecionada );

                    break;

            }

            if ( imagem != null ) {

                circleImageViewPerfil.setImageBitmap(imagem);

                //Recuperar dados da imagem para o Firebase

                ByteArrayOutputStream baos = new ByteArrayOutputStream();

                imagem.compress(Bitmap.CompressFormat.JPEG, 70,baos );

                byte[] dadosImagem = baos.toByteArray();

                //salvar imagem firebase

                StorageReference imagemRef = StorageReference

                        .child("imagens")

                        .child("perfil")

                        //.child( identificadorUsuario )

                        .child( identificadorUsuario + ".jpeg");

                UploadTask uploadTask = imagemRef.putBytes( dadosImagem );

                uploadTask.addOnFailureListener(new OnFailureListener() {

                    @Override

                    public void onFailure(@NonNull Exception e) {

                        Toast.makeText(ConfiguracoesActivity.this,

                                "Erro ao fazer upload da imagem",

                                Toast.LENGTH_SHORT).show();

                    }

                }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

                    @Override

                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                        Toast.makeText(ConfiguracoesActivity.this,

                                "Sucesso ao fazer upload da imagem",

                                Toast.LENGTH_SHORT).show();

                       Uri url = taskSnapshot.getDownloadUrl();

                        atualizaFotoUsuario(url);

                    }

                });

            }

        }catch (Exception e){

            e.printStackTrace();

        }

    }

}

public void atualizaFotoUsuario(Uri url){

    UsuarioFirebase.atualizarFotoUsuario(url);

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    for ( int permissaoResultado : grantResults ){

        if ( permissaoResultado == PackageManager.PERMISSION_DENIED ){

            alertaValidacaoPermissao();

        }

    }

}

private void alertaValidacaoPermissao(){

    AlertDialog.Builder builder = new AlertDialog.Builder( this );

    builder.setTitle("Permissões Negadas");

    builder.setMessage("Para utilizar o app é necessário aceitar as permissões");

    builder.setCancelable(false);

    builder.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {

        @Override

        public void onClick(DialogInterface dialog, int which) {

            finish();

        }

    });

    AlertDialog dialog = builder.create();

    dialog.show();

}

}

leandro12almeida commented 5 years ago

41 #46 #47