2016-07-30 27 views
5

Firebase depolama alanında yeniyim. Bunu öğrenebilmem için, bir buton ve bir ImageView olan basit bir uygulama yaptım. Düğmeye tıkladığımda, ImageView üzerinde bir görüntü (from drawable) görüntülenir. Ayrıca Firebase üzerinde görüntü yüklemek için kod yazdım, ancak onAddFailureListener istisna mesaj Kullanıcı bu nesneye erişim izni yok. Ne yapmalıyım?Kullanıcının bu nesneye erişim izni yok. Firebase depolama alanı android

service firebase.storage { 
    match /b/savephoto-a1cc3.appspot.com/o { 
    match /{allPaths=**} { 
     // Allow access by all users 
     allow read, write; 
    } 
    } 
} 

Çeşitli varsayılan kurallar: İşte

package com.example.asad.save_photo; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.net.Uri; 
import android.os.Environment; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.Toast; 

import com.google.android.gms.tasks.OnFailureListener; 
import com.google.android.gms.tasks.OnSuccessListener; 
import com.google.firebase.storage.FirebaseStorage; 
import com.google.firebase.storage.StorageMetadata; 
import com.google.firebase.storage.StorageReference; 
import com.google.firebase.storage.UploadTask; 

import java.io.ByteArrayOutputStream; 
import java.io.File; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     FirebaseStorage storage = FirebaseStorage.getInstance(); 

     StorageReference storageRef = storage.getReferenceFromUrl("gs://savephoto-a1cc3.appspot.com"); 

     final StorageReference mountainsRef = storageRef.child("asad"); 

     Button butt = (Button) findViewById(R.id.button); 


     butt.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       ImageView imageView = (ImageView) findViewById(R.id.image); 
       imageView.setImageResource(R.drawable.back2); 
       //imageView.setImageResource(R.drawable.back2); 

       imageView.setDrawingCacheEnabled(true); 
       imageView.buildDrawingCache(); 
       Bitmap bitmap = imageView.getDrawingCache(); 


       ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
       final byte[] data = baos.toByteArray(); 

       UploadTask uploadTask = mountainsRef.putBytes(data); 
       uploadTask.addOnFailureListener(new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception exception) { 
         // Handle unsuccessful uploads 
         showToast(exception.getMessage()); 
        } 
       }); 
         uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
        @Override 
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
         // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL. 
         //Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
         showToast("success !!!!!"); 
        } 
       }); 


      } 
     }); 

    } 

    public void showToast(String s) { 
     Toast.makeText(this,s,Toast.LENGTH_LONG).show(); 
    } 
} 

service firebase.storage { 
    match /b/savephoto-a1cc3.appspot.com/o { 
    allow read,write; 
    } 
} 
+0

OS sürüm 6.0 nedir? Evet ise, çalışma zamanı iznini http://stackoverflow.com/questions/38141523/directory-creation-not-working-in-marshmallow-android/38141778#38141778 –

+0

Nope'dan edinebilirsiniz. İşletim Sistemim sürümü 4.2 – ashay

+0

Bildirim dosyasına izinler eklediniz mi? –

cevap

13

Güncelleme match /{allPaths=**} ile güvenlik kuralları kamu okuma ve yazma erişimi tüm yollarda izin verildiğini belirtmek benim Firebase depolama kurallardır belgelerin Sample Rules bölümünün sekmelerinde bulunur.

+1

bunu nereye eklersiniz? –

+0

@rosualin: Projeniz için [Firebase Console] (https://console.firebase.google.com/) adresinden –

2
Firebase konsolunda depolama kurallarını değiştirme

enter image description here

service firebase.storage { 
    match /b/{bucket}/o { 
    match /{allPaths=**} { 
     allow read, write: if request.auth != null; 
    } 
    } 
} 
İlgili konular