Android 尝试将歌曲上载到firebase和应用程序失败,出现异常

Android 尝试将歌曲上载到firebase和应用程序失败,出现异常,android,arrays,firebase,error-handling,Android,Arrays,Firebase,Error Handling,我正在尝试制作一个音乐应用程序,每当我尝试向其上载歌曲时,该应用程序就会崩溃,错误为: 2021-05-25 04:51:02.446 24439-24439/com.example.msctry E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.msctry, PID: 24439 java.lang.RuntimeException: Failure delivering result ResultInf

我正在尝试制作一个音乐应用程序,每当我尝试向其上载歌曲时,该应用程序就会崩溃,错误为:

2021-05-25 04:51:02.446 24439-24439/com.example.msctry E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.msctry, PID: 24439
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=101, result=-1, data=Intent { dat=content://com.android.providers.downloads.documents/document/msf:7900 flg=0x1 }} to activity {com.example.msctry/com.example.msctry.MainActivity}: java.lang.NullPointerException: Attempt to get length of null array
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5097)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5138)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7814)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
     Caused by: java.lang.NullPointerException: Attempt to get length of null array
        at com.example.msctry.MainActivity.onActivityResult(MainActivity.java:112)
        at android.app.Activity.dispatchActivityResult(Activity.java:8292)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5090)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5138) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7814) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
起初我以为我只是没有给内部存储置换,所以我给了,但它仍然发生,这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.msctry">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:requestLegacyExternalStorage="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MscTry">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

由于某些原因,他们无法获得我试图上传的歌曲的长度,我不明白为什么,我尝试在另一部手机上运行应用程序,当我从某个音乐播放器中选择歌曲时,应用程序崩溃,当我从音频中选择歌曲时,应用程序没有崩溃,但在我的实际手机中根本不起作用

art=mediaMetadataRetriever.getEmbeddedPicture();
if(art != null){
Bitmap bitmap= BitmapFactory.decodeByteArray(art,0,art.length);
album_art.setImageBitmap(bitmap);
}
您只需检查艺术是否为空,因为某些歌曲可能没有专辑艺术


另外,这应该可以保存它,当您检索数据时,您还必须检查它是否为空

可能该歌曲文件没有嵌入图片?确保在
art
不为空时调用
length
,否则你会得到NPE。@AlexMamo how?@lyncx我不确定这是一个从youtube到mp3转换器的文件,请检查是否为空。
Bitmap bitmap= BitmapFactory.decodeByteArray(art,0,art.length);
art=mediaMetadataRetriever.getEmbeddedPicture();
if(art != null){
Bitmap bitmap= BitmapFactory.decodeByteArray(art,0,art.length);
album_art.setImageBitmap(bitmap);
}