Nabukodonosor
Nabukodonosor

Reputation: 699

MP3 downloader Fatal Exception

I have this source code for an mp3 download app, and it worked fine last time I used it, few months ago. Now when I try it, it gives me an error, when I click on a song to download it, from search results. Here's the error:

08-01 13:06:09.227: E/AndroidRuntime(2075): FATAL EXCEPTION: main
08-01 13:06:09.227: E/AndroidRuntime(2075): Process: com.soundload, PID: 2075
08-01 13:06:09.227: E/AndroidRuntime(2075): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Boolean de.voidplus.soundcloud.Track.isStreamable()' on a null object reference
08-01 13:06:09.227: E/AndroidRuntime(2075):     at com.baixavideos.Downloader.onPostExecute(Downloader.java:41)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at com.baixavideos.Downloader.onPostExecute(Downloader.java:1)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at android.os.AsyncTask.finish(AsyncTask.java:636)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at android.os.AsyncTask.access$500(AsyncTask.java:177)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at android.os.Handler.dispatchMessage(Handler.java:102)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at android.os.Looper.loop(Looper.java:135)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at android.app.ActivityThread.main(ActivityThread.java:5254)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at java.lang.reflect.Method.invoke(Native Method)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at java.lang.reflect.Method.invoke(Method.java:372)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
08-01 13:06:09.227: E/AndroidRuntime(2075):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
08-01 13:06:11.353: W/System.err(2174): java.io.IOException: open failed: EACCES (Permission denied)
08-01 13:06:11.353: W/System.err(2174):     at java.io.File.createNewFile(File.java:941)
08-01 13:06:11.354: W/System.err(2174):     at de.voidplus.soundcloud.SoundCloud.<init>(Unknown Source)
08-01 13:06:11.354: W/System.err(2174):     at com.baixavideos.ui.MainActivity.<clinit>(MainActivity.java:63)
08-01 13:06:11.354: W/System.err(2174):     at java.lang.reflect.Constructor.newInstance(Native Method)
08-01 13:06:11.354: W/System.err(2174):     at java.lang.Class.newInstance(Class.java:1606)
08-01 13:06:11.354: W/System.err(2174):     at android.app.Instrumentation.newActivity(Instrumentation.java:1066)

Downloader.java:

package com.baixavideos;

import com.baixavideos.ui.SongDetails;

import de.voidplus.soundcloud.SoundCloud;
import de.voidplus.soundcloud.Track;

import android.os.AsyncTask;
import android.util.Log;

public class Downloader extends AsyncTask<String, Void, Track>{

    private int id;
    private SoundCloud soundcloud;
    private SongDetails ui;

    public Downloader(){
        soundcloud = new SoundCloud("cd07b57592f6d914f437f8ab2856363d", "841953bd718a3ceb427b3e3be170a014"); 
    }

    public int getId() {
        return id;
    }

    public Downloader setId(int id) {
        this.id = id;

        return this;
    }

    @Override
    protected Track doInBackground(String... arg0) {        
        Track track = soundcloud.getTrack(getId());
        return track;
    }

    @Override
    protected void onPostExecute(Track track) {
        super.onPostExecute(track);

        if(track.isStreamable()){
            getUi().onSongLoaded(track);
        } else {
            getUi().onStreamingError();
        }
    }

    public SongDetails getUi() {
        return ui;
    }

    public Downloader setUi(SongDetails ui) {
        this.ui = ui;

        return this;
    }   

}

Upvotes: 0

Views: 307

Answers (1)

mangusta
mangusta

Reputation: 3544

the reason is that the id that you've set to Downloader (or probably the id was never set at all) is wrong, and there is no track with such an id in soundcloud. the track variable cannot be initialized and remains null.
the reason why it worked before is, that time you were using a valid track id

Upvotes: 1

Related Questions