91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Android應用中讀取SD卡文件時程序NullPointerException報錯如何解決

發布時間:2020-12-05 16:30:23 來源:億速云 閱讀:173 作者:Leah 欄目:移動開發

本篇文章為大家展示了在Android應用中讀取SD卡文件時程序NullPointerException報錯如何解決,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

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"

上述內容就是在Android應用中讀取SD卡文件時程序NullPointerException報錯如何解決,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐城市| 滨州市| 启东市| 缙云县| 新竹县| 金湖县| 隆安县| 平阴县| 新巴尔虎左旗| 南丹县| 永嘉县| 石楼县| 靖西县| 鄂温| 临江市| 视频| 绥化市| 石泉县| 西吉县| 志丹县| 中牟县| 贵溪市| 葫芦岛市| 高密市| 南部县| 西华县| 兴隆县| 辛集市| 威信县| 洪湖市| 正蓝旗| 巍山| 栖霞市| 横山县| 烟台市| 庆阳市| 义乌市| 察隅县| 休宁县| 永德县| 石屏县|