当前位置: 移动技术网 > IT编程>移动开发>Android > Android 中读取SD卡文件时抛出NullPointerException错误解决办法

Android 中读取SD卡文件时抛出NullPointerException错误解决办法

2019年07月24日  | 移动技术网IT编程  | 我要评论

乡村爱情第六部,贵州电视台非常完美,抚宁房屋出租

android 中读取sd卡文件时抛出nullpointerexception错误解决办法

相关源码:

package com.example.musicplayer;

import java.io.file;
import java.util.arraylist;
import java.util.list;

import android.app.activity;
import android.os.bundle;
import android.os.environment;
import android.view.menu;
import android.view.menuitem;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.listview;
import android.widget.textview;
import android.widget.toast;


public class mainactivity extends activity {

  private listview listview;
  private final string path = "/storage/sdcard/mp3/";
  private list<string> musiclist;
  private viewholder viewholder;

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);

    listview = (listview) findviewbyid(r.id.lv_music);

    toast.maketext(getapplicationcontext(), path, toast.length_short).show();

    initmusic();
  }

  private void initmusic() {
    file file = new file(path);
    file[] files = file.listfiles();
    musiclist = new arraylist<string>();

    for (file f : files) {
      if (f.getname().endswith(".mp3")) {
        musiclist.add(f.getabsolutepath());
      }
    }
    listview.setadapter(new musiclistadapter());
  }

  private class musiclistadapter extends baseadapter{

    @override
    public int getcount() {
      return musiclist.size();
    }

    @override
    public view getview(int position, view convertview, viewgroup parent) {
      view view = null;
      if(convertview == null){
        view = view.inflate(getapplicationcontext(), r.layout.activity_music_item, null);
        viewholder = new viewholder();
        viewholder.musicname = (textview) view.findviewbyid(r.id.tv_music_name);
      } else {
        view = convertview;
      }

      string path = musiclist.get(position);

      viewholder.musicname.settext(path.substring(path.lastindexof("/") + 1));
      return view;
    }

    @override
    public object getitem(int position) {
      // todo auto-generated method stub
      return null;
    }

    @override
    public long getitemid(int position) {
      // todo auto-generated method stub
      return 0;
    }


  }
}

获取sd卡中mp3文件夹下的文件信息时在foreach时抛出nullpointerexception,最后发现是没有添加读取sd卡的权限

<uses-permission android:name="android.permission.read_external_storage"/>

获取sd卡路径:”/mnt/sdcard/” “/storage/sdcard/”

官方推荐:

environment.getexternalstoragedirectory.getpath();

该方法获取的路径最后没有'/'

"/mnt/sdcard"  
"/storage/sdcard"

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网