我已经在权限文件中加入了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>和<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>权限了,但是还是抛出java.lang.NullPointerException
我的源码如下,功能是想把SD卡里有图片的文件夹都放进ArrayList里面的,我在javaproject里面运行算法是可以的,但是到S虚拟机里面就不可以了。
import java.io.File;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.GridView;
import learn.demo.GridViewAdapter;
public class MyGridViewimp extends Activity {
private GridView gridview = null;
private ArrayList<File> list = new ArrayList<File>();
//private ArrayList<File> s_list = new ArrayList<File>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
boolean isImafile = false; //如果该文件有一个Image了,就不能向list里加了
this.gridview = (GridView) super.findViewById(R.id.gridview);
//帮忙的人从这里看其,我是想获得SD卡里有图片的文件夹
File[] fs = new File(Environment.getExternalStorageDirectory().toString()).listFiles();
for(int i=0; i<fs.length; i++) {
Log.i("My", fs[i].getAbsolutePath());
if(!fs[i].isFile()) {
findImage(fs[i].getAbsolutePath());
} else if(isImafile==false && isImage(fs[i])){
isImafile = true;//如果该文件有一个Image了,就不能向list里加了
list.add(fs[i]);
}
}
gridview.setAdapter(new GridViewAdapter(this,list)) ;
}
private void findImage(String path) {
File file = new File(path);
if (!file.isFile()) {
boolean isImafile = false;
File[] fs = file.listFiles();
for (int i = 0; i < fs.length; i++) {
if (!fs[i].isFile()) {
findImage(fs[i].getAbsolutePath());
} else if (isImafile == false && isImage(fs[i])) {
isImafile = true;//如果该文件有一个Image了,就不能向list里加了
list.add(fs[i]);
}
}
}
}
private boolean isImage(File file) { //判断该文件是否未图片文件
String path = file.getName();
String end = path
.substring(path.lastIndexOf(".") + 1, path.length())
.toLowerCase();
if(end.equals("jpg") || end.equals("gif") || end.equals("png")
|| end.equals("jpeg") || end.equals("bmp")) {
return true;
}
return false;
}
}
其异常未
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): FATAL EXCEPTION: main
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): java.lang.RuntimeException: Unable to start activity ComponentInfo{learn.demo/learn.demo.MyGridViewimp}: java.lang.NullPointerException
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.os.Looper.loop(Looper.java:123)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at java.lang.reflect.Method.invoke(Method.java:521)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at dalvik.system.NativeStart.main(Native Method)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): Caused by: java.lang.NullPointerException
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at learn.demo.MyGridViewimp.findImage(MyGridViewimp.java:41)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at learn.demo.MyGridViewimp.onCreate(MyGridViewimp.java:28)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-24 11:23:37.766: ERROR/AndroidRuntime(2247): ... 11 more
04-24 11:23:37.786: WARN/ActivityManager(59): Force finishing activity learn.demo/.MyGridViewimp
04-24 11:23:38.296: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{44f5ea18 learn.demo/.MyGridViewimp}
04-24 11:23:40.546: WARN/InputManagerService(59): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@450ae178