Reputation: 699
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
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