当前位置:编程学习 > wap >>

安卓播放器放进手机运行不了,估计是无法获取手机的SD卡路径

各位大神,我是用自己创建的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
--------------------编程问答-------------------- 空指针
com.jiang.android.MusicPlayer3.updateSongList(MusicPlayer3.java:160)

MusicPlayer3.java 160行 --------------------编程问答-------------------- 取sdcard的路径的代码贴下 --------------------编程问答-------------------- private static final String MEDIA_PATH=new String("/mnt/sdcard"); --------------------编程问答-------------------- 能不能多贴两行代码啊 --------------------编程问答-------------------- 这个SD卡是好的吗? --------------------编程问答-------------------- 你SD卡里面是不是没有东西啊 --------------------编程问答-------------------- 我sd卡有歌曲呀,肯定有的 --------------------编程问答-------------------- 贴下 com.jiang.android.MusicPlayer3.updateSongList  这个方法的代码呗,才好找问题. --------------------编程问答-------------------- 你可以试试 android.os.Environment.getExternalStorageDirectory()
来代替直接使用"/mnt/sdcard" --------------------编程问答--------------------    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);        
     }   
    } --------------------编程问答-------------------- 问题在 listFiles() 这个方法
如果没有符合条件的文件,会返回 null,而不是一个长度为0的数组


...
File[] files = home.listFiles(new Mp3Filter());
if(files != null && files.length > 0)
{
    for(File f : files)
    {
        songs.add(file.getName());
    }
}
...

--------------------编程问答-------------------- 大神,按照你的方法会有下面的错误产生,请问怎么解决呢
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
--------------------编程问答-------------------- 貌似是 MediaPlayer的状态问题了,你得找到具体错误的代码 --------------------编程问答-------------------- 大神啊,我发我的项目给你,你能帮我看看怎么才能弄上手机去吗?我的项目在安卓虚拟机是行的,谢谢哈 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 9 楼  的回复:
你可以试试 android.os.Environment.getExternalStorageDirectory()
来代替直接使用"/mnt/sdcard"


相对路径比绝对路径兼容性更好。 --------------------编程问答-------------------- 大神啊那个我可以读取手机sd卡了,不过选择歌曲的时候发现会出现“强制停止”的画面,但是歌曲可以一直播放,请问是什么原因啊? Caused by: java.lang.NullPointerException这个是error
--------------------编程问答-------------------- 请问大神们这是什么错误啊?救命啊!!!
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)
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,