Ich bin neu in Firebase-Speicher. Nur damit ich es lernen konnte, machte ich eine einfache App, die einen Knopf und eine ImageView
hat. Wenn ich auf die Schaltfläche klicke, wird ein Bild (from drawable)
auf dem ImageView angezeigt. Ich habe auch den Code zum Hochladen des Images auf Firebase geschrieben, aber die Ausnahmebedingungsnachricht onAddFailureListener
gibt die Nachricht Benutzer hat keine Berechtigung, auf dieses Objekt zuzugreifen. Was soll ich tun?Der Benutzer hat keine Berechtigung, auf dieses Objekt zuzugreifen. Firebase Speicher Android
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();
}
}
Hier sind meine Feuerbasis Lagerregeln
service firebase.storage {
match /b/savephoto-a1cc3.appspot.com/o {
allow read,write;
}
}
Ihre OS-Version ist 6.0? Wenn ja dann erhalten Laufzeit-Erlaubnis von http://stackoverflow.com/questions/38141523/directory-creation-not-working-in-marshmallow-android/38141778#38141778 –
Nein. Meine Betriebssystemversion ist 4.2 – ashay
Haben Sie Berechtigungen in der Manifestdatei hinzugefügt? –