04-28 06:46:42.892: E/AndroidRuntime(387): FATAL EXCEPTION: main
04-28 06:46:42.892: E/AndroidRuntime(387): java.lang.RuntimeException: Unable to start service com.java.android.MusicService@40537020 with Intent { act=com.android.musicPlayer.PLAY_ACTION cmp=com.java.android/.MusicService }: java.lang.NullPointerException
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2052)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.app.ActivityThread.access$2800(ActivityThread.java:117)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:994)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.os.Looper.loop(Looper.java:123)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.app.ActivityThread.main(ActivityThread.java:3683)
04-28 06:46:42.892: E/AndroidRuntime(387):  at java.lang.reflect.Method.invokeNative(Native Method)
04-28 06:46:42.892: E/AndroidRuntime(387):  at java.lang.reflect.Method.invoke(Method.java:507)
04-28 06:46:42.892: E/AndroidRuntime(387):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-28 06:46:42.892: E/AndroidRuntime(387):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-28 06:46:42.892: E/AndroidRuntime(387):  at dalvik.system.NativeStart.main(Native Method)
04-28 06:46:42.892: E/AndroidRuntime(387): Caused by: java.lang.NullPointerException
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:707)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:692)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.media.MediaPlayer.create(MediaPlayer.java:628)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.media.MediaPlayer.create(MediaPlayer.java:609)
04-28 06:46:42.892: E/AndroidRuntime(387):  at com.java.android.MusicService.initByPath(MusicService.java:89)
04-28 06:46:42.892: E/AndroidRuntime(387):  at com.java.android.MusicService.onStart(MusicService.java:56)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.app.Service.onStartCommand(Service.java:428)
04-28 06:46:42.892: E/AndroidRuntime(387):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2039)
04-28 06:46:42.892: E/AndroidRuntime(387):  ... 10 more
跪求大神们指出错误啊大神

解决方案 »

  1.   

    大神啊,音乐文件我已经导入到sdcard里了,歌曲路径也有了
                       Bundle songList = getIntent().getExtras();  
                    path = songList.getString("song_path");  
                    uri = Uri.parse(path);上面的代码是在  MusicPlayer类里面的,我想在Service里面获取这个uri啊,请问怎么获取呢
      

  2.   

    Service里面获取这个uri啊?   我汗,直接用intent传过去都行
      

  3.   

    intent已经用来传递按钮的动作了,请问intent可以传递两个数据吗,这个我不清楚呢
      

  4.   

    用Log输出测试是否传成功,以及传过来的音乐路径是否正确
      

  5.   

    大神,他输出这个
    05-01 03:45:30.542: D/MusicPlayer(290): path
    05-01 03:45:30.642: D/MusicService(290): onCreate__
    05-01 03:45:30.642: D/AndroidRuntime(290): Shutting down VM
      

  6.   

    你在这句的前面再加上一句Log.i("myLog","歌曲路径:" + path);
    uri   =   Uri.parse(path); 看一下显示出来的路径的音乐文件是否存在。
      

  7.   

    05-01 08:33:59.867: I/myLog(351): 歌曲路径:null
    05-01 08:33:59.981: D/MusicService(351): onCreate__
    05-01 08:34:01.042: I/myLog(351): 歌曲路径:/sdcard/KIELUN.mp3
    大神,按照您做的就出现这个
      

  8.   

    [Quote=引用 8 楼  的回复:]
    你在这句的前面再加上一句Log.i("myLog","歌曲路径:" + path);
    uri = Uri.parse(path); 看一下显示出来的路径的音乐文件是否存在。
    大神,它出现这个情况
    05-01 08:44:16.476: I/myLog(404): 歌曲路径:null
    05-01 08:44:16.506: D/MusicService(404): onCreate__
    05-01 08:44:16.516: D/AndroidRuntime(404): Shutting down VM
      

  9.   

    对不起大神,这个才是真正的,刚刚上面那两个都好像有点问题
    05-01 09:20:56.261: I/myLog(296): 歌曲路径:/sdcard/haha.mp3
    05-01 09:20:56.281: D/MusicService(296): onCreate__
    05-01 09:20:56.292: D/AndroidRuntime(296): Shutting down VM
      

  10.   

    从Log看得出,有一次调用时,歌曲路径为空的。
      

  11.   

    很明显噢,为null噢,这也正是出错提示里面提示了因为歌曲来源为null,所以出错无法播放。
      

  12.   

    如果你确定不会出现null的情况,只要有一次出现,那么你程序肯定会出错,或者换一种方式,在播放之前判断路径是否为null,例如
    if(path != null) 
    {
    ......继续播放
    }
    else
    {
    .....提示路径不存在。
    }如果你确定SDCARD上的根目录存在haha.mp3的话,你在uri = Uri.parse(path); 有前面加一句:
    path = Environment.getExternalStorageDirectory() + "/haha.mp3");
    uri = Uri.parse(path); 
    测试一下用固定的真实路径是否可以播放。
      

  13.   

    茂仔大神,我终于成功了,原因是uri没有顺利传递到Service,这几天谢谢你的帮助,超级感谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  14.   

    06-10 12:04:43.538: E/AndroidRuntime(304): FATAL EXCEPTION: main
    06-10 12:04:43.538: E/AndroidRuntime(304): java.lang.StringIndexOutOfBoundsException
    06-10 12:04:43.538: E/AndroidRuntime(304):  at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:642)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at java.lang.StringBuffer.substring(StringBuffer.java:715)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at mars.com.Searche_Line$DoSearchListener.getHtmlStr(Searche_Line.java:159)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at mars.com.Searche_Line$DoSearchListener.onClick(Searche_Line.java:72)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at android.view.View.performClick(View.java:2408)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at android.view.View$PerformClick.run(View.java:8816)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at android.os.Handler.handleCallback(Handler.java:587)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at android.os.Handler.dispatchMessage(Handler.java:92)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at android.os.Looper.loop(Looper.java:123)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at java.lang.reflect.Method.invokeNative(Native Method)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at java.lang.reflect.Method.invoke(Method.java:521)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    06-10 12:04:43.538: E/AndroidRuntime(304):  at dalvik.system.NativeStart.main(Native Method)