android使用listfiles()获得文件并将其存储至File[] files后无法获得files.length
如题,在手机上模拟后显示该应用停止运行,调试问题如图以下是代码(activity.java)publicclassMainActivityextendsActivity{...
如题,在手机上模拟后显示该应用停止运行,调试问题如图
以下是代码(activity.java)
public class MainActivity extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@SuppressLint("SdCardPath")
private List<String> getImagePathFromSD()
{
List<String> picList = new ArrayList<String>();
String imagePath = Environment.getExternalStorageDirectory().toString()+"/tencent/MicroMsg" ;
File mfile = new File(imagePath);
File[] files = mfile.listFiles();
try{
for (int i = 0; i < files.length; i++) //问题部分:file.length
{
File file = files[i];
if (checkIsImageFile(file.getPath()))
{
picList.add(file.getPath());
}
} // 返回得到的图片列表 */
}catch(Exception e)
{
Log.v("111111111111", imagePath);
}
return picList;
}
@SuppressLint("DefaultLocale")
boolean checkIsImageFile(String fName)
{
boolean isImageFile = false;
String FileEnd = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();
if (FileEnd.equals("jpg") || FileEnd.equals("gif") || FileEnd.equals("png") || FileEnd.equals("jpeg") || FileEnd.equals("bmp"))
{
isImageFile = true;
}
else
{
isImageFile = false;
}
return isImageFile;
}
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mainpage);
Button Btn1 = (Button)findViewById(R.id.picture);
Btn1.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
getImagePathFromSD();
}
});
} 展开
以下是代码(activity.java)
public class MainActivity extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@SuppressLint("SdCardPath")
private List<String> getImagePathFromSD()
{
List<String> picList = new ArrayList<String>();
String imagePath = Environment.getExternalStorageDirectory().toString()+"/tencent/MicroMsg" ;
File mfile = new File(imagePath);
File[] files = mfile.listFiles();
try{
for (int i = 0; i < files.length; i++) //问题部分:file.length
{
File file = files[i];
if (checkIsImageFile(file.getPath()))
{
picList.add(file.getPath());
}
} // 返回得到的图片列表 */
}catch(Exception e)
{
Log.v("111111111111", imagePath);
}
return picList;
}
@SuppressLint("DefaultLocale")
boolean checkIsImageFile(String fName)
{
boolean isImageFile = false;
String FileEnd = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();
if (FileEnd.equals("jpg") || FileEnd.equals("gif") || FileEnd.equals("png") || FileEnd.equals("jpeg") || FileEnd.equals("bmp"))
{
isImageFile = true;
}
else
{
isImageFile = false;
}
return isImageFile;
}
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mainpage);
Button Btn1 = (Button)findViewById(R.id.picture);
Btn1.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
getImagePathFromSD();
}
});
} 展开
展开全部
读取的SD卡目录是否存在,如果存在的话,请看一下在AndroidManifest.xml里是否添加了读取sd卡的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
log要截右边的部分,把滚动条滚到右边去再截,不然看不到有用的信息
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
log要截右边的部分,把滚动条滚到右边去再截,不然看不到有用的信息
更多追问追答
追答
从log里找到你写的类名 里面提到的是因为空指针异常导致程序崩溃。其中直接引起的原因是
MainActivity里的第46行 在调用Tosat相关方法的时候出现的。如果会报null.是不是Toast.makeText()这个方法你没有传入有效的Context
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询