首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android缺少权限为何报NullPointerException

2012-08-16 
android缺少权限为什么报NullPointerException??? 下面是我的一个通过Http下载文件的练习,问题是在没有为

android缺少权限为什么报NullPointerException

??? 下面是我的一个通过Http下载文件的练习,问题是在没有为程序添加网络访问权限(ndroid.permission.INTERNET)的情况为什么报的是NullPointerException,而不是指定缺少某个权限呢?

?????

public class FileDownload extends Activity {public URL url;TextView tView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LinearLayout linearLayout = new LinearLayout(this);tView = new TextView(this);tView.setText("将要显示下载的网络数据");Button download = new Button(this);linearLayout.addView(download);linearLayout.addView(tView);setContentView(linearLayout);download.setText("开始下载文本文件");download.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {HttpDownloader hd = new HttpDownloader();//注意下面的192.168.1.106是我电脑此时的ip地址,如果使用的是动态ip,请在运行时确认修改,/myapp是我的web应用,WebData.txt是web应用根目录下的一个文本文件String webData = hd.download("http://192.168.1.106:8080/myapp/WebData.txt");  //此处报错,空指针异常tView.setText(webData);}});}class HttpDownloader {public String download(String urlStr){StringBuffer sb = new StringBuffer();String line = null;BufferedReader buffer = null;try {url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));while((line = buffer.readLine()) != null) {sb.append(line);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {buffer.close(); //此处报错,空指针异常} catch (IOException e) {e.printStackTrace();}}return sb.toString();}}}

?

报错:

03-27 07:58:43.210: E/AndroidRuntime(1303): Uncaught handler: thread main exiting due to uncaught exception
03-27 07:58:43.220: E/AndroidRuntime(1303): java.lang.NullPointerException
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at com.wly.summary.mechanism.FileDownload$HttpDownloader.download(FileDownload.java:64)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at com.wly.summary.mechanism.FileDownload$1.onClick(FileDownload.java:39)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.view.View.performClick(View.java:2364)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.view.View.onTouchEvent(View.java:4179)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.widget.TextView.onTouchEvent(TextView.java:6541)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.view.View.dispatchTouchEvent(View.java:3709)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-27 07:58:43.220: E/AndroidRuntime(1303): ?at android.view.ViewGroup.dispatchTouch.......

?

由错误信息可以报的是空指针异常,为什么不是缺少权限异常的描述呢?

1 楼 forever-liang 2012-05-13   或许是没权限,取不到实例,所以报空指针
至于为什么不报缺少权限的Exception,有可能是因为权限是间接导致的程序错误,空指针才是直接的因素吧,个人理解 2 楼 xdh725 2012-06-04   我也报了这个错. 直接错误是没错. Android调试确实不太方便.  对异常处理有没有更好的方法呢. 权限就只能自己注意了

热点排行