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);
}