各位大神,我是用自己创建的sdcard来在虚拟机运行播放器的,但是到手机就出错了,在电脑上是没错的,请问是什么问题啊,我已经获得了权限的,可能是手机SD卡无法获取,请问该怎么做呢???
05-29 13:18:20.663: E/AndroidRuntime(11173): FATAL EXCEPTION: main
05-29 13:18:20.663: E/AndroidRuntime(11173): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jiang.android/com.jiang.android.MusicPlayer3}: java.lang.NullPointerException
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1709)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1734)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.ActivityThread.access$1500(ActivityThread.java:124)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:972)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.os.Looper.loop(Looper.java:130)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.ActivityThread.main(ActivityThread.java:3859)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at java.lang.reflect.Method.invokeNative(Native Method)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at java.lang.reflect.Method.invoke(Method.java:507)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at dalvik.system.NativeStart.main(Native Method)
05-29 13:18:20.663: E/AndroidRuntime(11173): Caused by: java.lang.NullPointerException
05-29 13:18:20.663: E/AndroidRuntime(11173):  at com.jiang.android.MusicPlayer3.updateSongList(MusicPlayer3.java:160)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at com.jiang.android.MusicPlayer3.onCreate(MusicPlayer3.java:59)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-29 13:18:20.663: E/AndroidRuntime(11173):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1673)
05-29 13:18:20.663: E/AndroidRuntime(11173):  ... 11 more

解决方案 »

  1.   

    空指针
    com.jiang.android.MusicPlayer3.updateSongList(MusicPlayer3.java:160)MusicPlayer3.java 160行
      

  2.   

    private static final String MEDIA_PATH=new String("/mnt/sdcard");
      

  3.   

    贴下 com.jiang.android.MusicPlayer3.updateSongList  这个方法的代码呗,才好找问题.
      

  4.   

    你可以试试 android.os.Environment.getExternalStorageDirectory()
    来代替直接使用"/mnt/sdcard"
      

  5.   

       private static final String MEDIA_PATH=new String("/mnt/sdcard");
    public void updateSongList(){
         File home=new File(MEDIA_PATH);
        
         if(home.listFiles(new Mp3Filter()).length>0){
         for(File file:home.listFiles(new Mp3Filter())){
         songs.add(file.getName());
         }   
         ArrayAdapter<String>songList=new ArrayAdapter<String>(this,R.layout.song_item,songs);
         setListAdapter(songList);        
         }   
        }
      

  6.   

    问题在 listFiles() 这个方法
    如果没有符合条件的文件,会返回 null,而不是一个长度为0的数组
    ...
    File[] files = home.listFiles(new Mp3Filter());
    if(files != null && files.length > 0)
    {
        for(File f : files)
        {
            songs.add(file.getName());
        }
    }
    ...
      

  7.   

    大神,按照你的方法会有下面的错误产生,请问怎么解决呢
    06-04 20:14:40.275: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=1
    06-04 20:14:40.275: E/MediaPlayer(10993): error (-38, 0)
    06-04 20:14:40.327: E/MediaPlayer(10993): Error (-38,0)
    06-04 20:14:40.449: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.468: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.483: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.507: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.514: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.538: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.561: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.577: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.608: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.711: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:40.725: E/MediaPlayer(10993): Attempt to perform seekTo in wrong state: mPlayer=0x0, mCurrentState=0
    06-04 20:14:41.671: W/KeyCharacterMap(10993): Can't open keycharmap file
      

  8.   

    貌似是 MediaPlayer的状态问题了,你得找到具体错误的代码
      

  9.   

    大神啊那个我可以读取手机sd卡了,不过选择歌曲的时候发现会出现“强制停止”的画面,但是歌曲可以一直播放,请问是什么原因啊? Caused by: java.lang.NullPointerException这个是error
      

  10.   

    请问大神们这是什么错误啊?救命啊!!!
    FATAL EXCEPTION: main
    android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 7
      at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
    at android.database.CursorWrapper.getString(CursorWrapper.java:135)
      at com.jiang.android.MusicPlayer3.onListItemClick(MusicPlayer3.java:243)
    at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
      at android.widget.ListView.performItemClick(ListView.java:3513)
      at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop  at android.app.ActivityThread.main(ActivityThread.java:3683)
      at java.lang.reflect.Method.invokeNative(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:507)
    06 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run06-06  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
      at dalvik.system.NativeStart.main(Native Method)