当我尝试将照片上传到 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但是当我尝试下载时却不是这样吗?

无法将 react-native-camera TakePictureResponse 上传到 Firebase 存储

文件上传到 Firebase 存储不起作用(“存储/无效参数”)