当我尝试将照片上传到 Firebase 存储时,Android 应用程序崩溃
Posted
技术标签:
【中文标题】当我尝试将照片上传到 Firebase 存储时,Android 应用程序崩溃【英文标题】:Android app crashes when i try to upload photo to firebase storage 【发布时间】:2017-11-10 10:33:55 【问题描述】:用户选择照片,点击按钮,应用应将其上传到 Firebase 存储
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
storage=FirebaseStorage.getInstance();
mRef=storage.getReference();
final Uri selectedImg = getIntent().getData();
mImageView = (ImageView) findViewById(R.id.post_img_last);
mImageView.setImageURI(selectedImg);
uploadB = (Button) findViewById(R.id.upload);
uploadB.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
StorageReference reference=mRef.child("posts");
reference.putFile(selectedImg);
);
当我点击按钮时,应用程序崩溃。
这是 build.gradle
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
exclude group: 'com.android.support', module: 'support-annotations'
)
//noinspection GradleCompatible
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.firebaseui:firebase-ui-auth:1.2.0'
compile 'com.google.firebase:firebase-storage:10.0.1'
testCompile 'junit:junit:4.12'
应用插件:'com.google.gms.google-services'
这是错误日志
06-08 18:12:14.192 32236-32236/com.example.fcb.test A/FirebaseApp: Firebase API initialization failure.
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.google.firebase.FirebaseApp.zza(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1761)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1730)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5748)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5314)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5254)
at android.app.ActivityThread.access$1500(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1609)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6102)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
【问题讨论】:
发布产生错误的代码 这不是公开问题的正确方法。您必须在问题本身中以正确的格式发布所有这些内容,而不是图片。 请发布崩溃的堆栈跟踪 我确实检查过了 【参考方案1】:您需要在使用前初始化 firebase,正如错误中明确指出的那样:Firebase API initialization failure
。
创建一个名为 BaseApplication
的 java 类,如下所示:
public class BaseApplication extends Application
@Override
protected void onCreate()
super.onCreate();
FirebaseApp.initializeApp(this);
在清单文件的<application>
标签内添加android:name
属性,如下所示:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
...
// This is what you need to add:
android:name=".BaseApplication"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
...
/>
【讨论】:
以上是关于当我尝试将照片上传到 Firebase 存储时,Android 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试将图像上传到 Firebase 存储时,putFile 在 kotlin 中不起作用
使用 Pickers 使用 Flutter Web 将照片上传到 Firebase 存储时出错
如何在将照片上传到 Firebase 存储时将日期或时间等用户图像详细信息添加到文件名?
ios将图像上传到Firebase但是当我尝试下载时却不是这样吗?