AndroidデバイスのFirebaseストレージに追加したイメージをプルしようとしています。これが実行されるたびに、onFailureListener()
からこのエラーが発生します
E/StorageException(9646):不明なエラーが発生しました。HTTP結果コードとサーバーの応答の内部例外を確認してください。 E/StorageException(9646):コード:-13000 HttpResult:0
とりあえず読み取り/書き込みができるようにストレージのアクセス許可を変更して、問題がないことを確認しました。
final ImageView test = (ImageView) findViewById(R.id.test_image);
StorageReference ref = storage.getReferenceFromUrl("gs://my-project.appspot.com/test_image.png");
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.d(TAG, "Successfully loaded uri");
test.setImageURI(uri);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "Failed loaded uri: " + e.getMessage());
}
});
Httpresultがゼロであることに気づきました。これは、ダウンロードURLを取得する要求が行われなかったことを示しています。これが発生する可能性がある1つの方法は、携帯電話で再生サービスが更新されていない場合です。 adb logcatは「ストレージネットワークレイヤーをロードできませんでした」という影響のあるエラーを表示するため、これはエラーであることがわかります。
これを修正するには、スマートフォンの再生サービスを更新してください。これにはいくつかの方法があります。アプリ「プレイサービス情報」をインストールしてPlayストアでプレイサービスを確認し、利用可能な場合は更新ボタンを押すのが最も簡単だと思います。
Google Play開発者サービスを更新デバイス上、gradleスクリプトではありません(ただし、それも行います)。
ネットでベンジャミン・ウルフや他の人の答えだけをスキミングしただけで、頭を壁に1時間ぶつけた後、戻って注意深く読みました。これが他の人が私の間違いを避けるのに役立つことを願っています!
私は同じ問題を抱えていました、これの解決策は:
_StorageReference storageRef = storage.getReferenceFromUrl("gs:<bucket address>");
_
StorageReference spaceRef = storageRef.child("child name");
これを回避するには、最新のGoogle Playサービスが必要です。
また、Firebaseコンソールで匿名認証を有効にします。
手遅れであることがわかりますが、上記のいずれも機能しなかったため、唯一の修正は、Cloud Storageの依存関係を更新することでしたAndroidライブラリを最新バージョンの19.1.0に更新しました。
Firebase Assistantによって追加された依存関係は古いものでした。
私の場合、ダウンロード場所ではなくダウンロードURLからStorageRefを作成していました。
_String storageLocation="gs://bbeplayer.appspot.com/heart.png";
String downloadURL="https://firebasestorage.googleapis.com/v0/b/bbeplayer.appspot.com/o/heart.png?alt=media&token=41a22961-daf1-433e-a580-e65144d34ab3";
StorageReference reference;
reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);
_
だから私はreference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);
を変更しました
に
_reference=FirebaseStorage.getInstance().getReferenceFromUrl(storageLocation);
_
Quick Start Firebaseストレージサンプルを使用しているときに同じ問題が発生しました。問題は、アプリがAndroid Mのストレージに対するランタイム権限をリクエストしていないことでした。
したがって、ストレージの権限を確認してみてください。