android的权限问题

会飞的程序员 2012-04-24 07:58:22
我已经在权限文件中加入了<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
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
会飞的程序员 2012-04-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
MyGridViewimp.java第41行代码是什么呢?

建议发完整代码上来看一下
[/Quote]

此文件就是 MyGridViewimp.java

最多还有是GridViewAdapter(this,list).java为
package learn.demo;

import java.io.File;
import java.util.ArrayList;

import android.content.Context;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.net.Uri;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListAdapter;

public class GridViewAdapter implements ListAdapter {
private Context context= null;
private ArrayList<File> list = new ArrayList<File>();

public GridViewAdapter(Context context, ArrayList<File> list) {
this.context = context;
this.list= list;
}
@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
return false;
}

@Override
public int getCount() {

return list.size();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public int getItemViewType(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageButton mybut = new ImageButton(this.context);
mybut.setBackgroundColor(Color.RED);
mybut.setImageURI(Uri.parse(list.get(position).getAbsolutePath()));
return mybut;
}

@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 0;
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isEmpty() {
if(list.isEmpty()) {
return true;
}
return false;
}

@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub

}

@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub

}

}
AMinfo 2012-04-25
  • 打赏
  • 举报
回复
建议将您代码中的if (!file.isFile()) 改为:

if (file!=null & !file.isFile())
AMinfo 2012-04-24
  • 打赏
  • 举报
回复
MyGridViewimp.java第41行代码是什么呢?

建议发完整代码上来看一下

深夜深几许 2012-04-24
  • 打赏
  • 举报
回复
可能是没有实例化对象

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧