我编写了这段代码,将图像上传到带有子目录“photos”的 firebase。
我发现这个错误:
java.lang.IllegalStateException:FirebaseApp 未使用存储桶名称进行初始化。
public class Firebase extends AppCompatActivity {
public TextView text1;
public Button button1;
public Button button2;
public StorageReference mStorage;
public ProgressDialog mProgress;
public static final int GALLERY_INTENT = 2;
public static final String FIREBASE_URL = "https://ivepos.firebaseio.com/weather";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(firebase);
mProgress = new ProgressDialog(this);
mStorage = FirebaseStorage.getInstance().getReference();
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK);
i.setType("image/*");
startActivityForResult(i, GALLERY_INTENT);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK){
mProgress.setMessage("Uploading...");
mProgress.show();
Uri uri = data.getData();
StorageReference filepath = mStorage.child("photos").child(uri.getLastPathSegment());
filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(Firebase.this, "Upload done", Toast.LENGTH_SHORT).show();
mProgress.dismiss();
}
});
}
}
}
您的
google-services.json
可能不包含 Firebase 存储 URL。如果您在创建项目后立即下载文件,这是可能的,因为创建存储桶可能需要一些时间。
解决方案是从 Firebase Cosnole 下载最新的
google-services.json
,将其放入项目的应用程序目录中,然后重建应用程序。
请检查您的存储桶设置。
如果您正在处理辅助 Firebase 项目。来自 google-service.json 的 SetStorageBucket 值
val options1 = FirebaseOptions.Builder()
.setApiKey(data.apiKey)
.setApplicationId(data.appID)
.setProjectId(data.projectID)
.setStorageBucket(data.storageURL)
.setDatabaseUrl(data.databaseURL)
.build()
FirebaseApp.initializeApp(context, options1, "agencyDB")