Ich bin Lagerung Feuerbasis. Nur damit ich es lernen kann, versuche ich ein Bild von ImageView auf Firebase-Speicher hochzuladen. Meine App hat eine Schaltfläche. Wenn ich auf die Schaltfläche klicke, wird das Bild (aus dem Zeichensatz) in der Bildansicht angezeigt, und das Bild sollte beim Klicken auf die Schaltfläche in den Firebase-Speicher hochgeladen werden. Bisher habe ich das Bild per Knopfdruck angezeigt, kann es aber nicht auf den Firebase-Speicher hochladen. Die addOnFilureListener wird genannt (ich bin Überprüfung, welche durch einen Toast genannt wird) Hier ist meine Haupt-Java-Datei und Fehler Ich bin reeiving. Ich habe meinen Firebase-Speicher auch für den Fall der Fälle veröffentlicht. Welche Änderungen muss ich machen?addOnFilureListener genannt zu werden, wenn ich versuche Bilder zu Feuerbasis Speicher laden 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("images");
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);
byte[] data = baos.toByteArray();
UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
showToast("unsuccessful");
}
}).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_SHORT).show();
}
}
Und das ist der Fehler, den ich
erhalten07-29 20:18:50.034 2888-3011/com.example.asad.save_photo E/NetworkRqFactoryProxy: NetworkRequestFactoryProxy failed with a RemoteException:
com.google.android.gms.internal.zzsj$zza: No acceptable module found. Local version is 0 and remote version is 0.
at com.google.android.gms.internal.zzsj.zza(Unknown Source)
at com.google.android.gms.internal.zzaml.<init>(Unknown Source)
at com.google.android.gms.internal.zzaml.zzi(Unknown Source)
at com.google.firebase.storage.StorageReference.zzcyb(Unknown Source)
at com.google.firebase.storage.UploadTask.zzcyn(Unknown Source)
at com.google.firebase.storage.UploadTask.run(Unknown Source)
at com.google.firebase.storage.StorageTask$5.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
07-29 20:18:50.034 2888-3011/com.example.asad.save_photo E/UploadTask: Unable to create a network request from metadata
android.os.RemoteException
at com.google.android.gms.internal.zzaml.<init>(Unknown Source)
at com.google.android.gms.internal.zzaml.zzi(Unknown Source)
at com.google.firebase.storage.StorageReference.zzcyb(Unknown Source)
at com.google.firebase.storage.UploadTask.zzcyn(Unknown Source)
at com.google.firebase.storage.UploadTask.run(Unknown Source)
at com.google.firebase.storage.StorageTask$5.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
07-29 20:18:50.034 2888-3011/com.example.asad.save_photo E/StorageException: StorageException has occurred.
An unknown error occurred, please check the HTTP result code and inner exception for server response.
Code: -13000 HttpResult: 0
07-29 20:18:50.034 2888-3011/com.example.asad.save_photo E/StorageException: null
android.os.RemoteException
at com.google.android.gms.internal.zzaml.<init>(Unknown Source)
at com.google.android.gms.internal.zzaml.zzi(Unknown Source)
at com.google.firebase.storage.StorageReference.zzcyb(Unknown Source)
at com.google.firebase.storage.UploadTask.zzcyn(Unknown Source)
at com.google.firebase.storage.UploadTask.run(Unknown Source)
at com.google.firebase.storage.StorageTask$5.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
07-29 20:18:52.389 2888-2961/com.example.asad.save_photo E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaa384ed0
Hier sind meine Feuerbasis Lagerregeln:
service firebase.storage {
match /b/savephoto-a1cc3.appspot.com/o {
allow read,write;
}
}
Hier ist mein activity_main Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.asad.save_photo.MainActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/button"
android:id="@+id/image" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Ist das immer noch ein ungelöstes Problem? Ist Ihre [neue Frage] (http://stackoverflow.com/q/38671444/4815718) ein Hinweis darauf, dass Sie nicht mehr die Ausnahme erhalten und stattdessen einen Fehlerrückruf erhalten? –
In beiden Fragen wird Fehler Ausnahme aufgerufen, aber mit unterschiedlichen Nachrichten. Ich erhielt das http-Ergebnis: 0, aber wenn ich Google-Dienste aktualisierte, gibt es diese Ausnahme nicht mehr. Stattdessen gibt es jetzt "Benutzer hat keine Berechtigung, auf dieses Objekt zuzugreifen" – ashay