Android之EACCES (Permission denied)与Permission denied异常探密
话说,Accipiter君,最近又开始怒学Android了,记得刚开始还是09年学的,现在的手机还是华为出的最早的一款Android手机C8500,那时候就想好好学习Android,赚点小钱,可是~~~没有坚持学习!遗恨这么几年啊!所以现在从头学习Android确有一种考古探密的感觉啊!进入正题吧,今天就对Android中的一个经典的异常进行一次探密行吧。。
一、进入密室
嗯,一是我想从浩瀚的Internet抓点东西,二是我想给浩瀚的Internet提供点东西,自己搭个服务,如何让小伙伴们看到了,现在的小伙伴们都流行移动,也得整个移动的平台吧。无奈,写了几句代码,就报了个java.net.ConnectException: socket failed: EACCES (Permission denied)异常。它就像个进入密室的门,从此就得去密室观光一番。
二、密室见闻
碰到问题,先看了日志,虽然是小白,但是有Internet大神在身边,相信神马都不是秘密!马上就搜索!搜索之,哈,难兄难弟还真多!有直接就是这个问题的【http://www.cnblogs.com/Lewis/p/3298994.html】,还有就是:java.io.IOException: open failed: EACCES (Permission denied)【http://blog.csdn.net/liranke/article/details/17239977】,总结之,都是和Permission【http://hi.baidu.com/spare_h/item/1c1b4ee8941e04f0e1a5d4cd】有关系。 神马?还有和JDK有关系的【https://www.java.net/node/703177】。
三、密室揭秘
1.最直接的就是java.net.ConnectException: socket failed: EACCES (Permission denied)异常,这个只需要在AndroidManifest.xml中加上:
<uses-permission android:name="android.permission.INTERNET"/>
2.什么?加上了,还是没看到真相啊!哦,你加的位置对吗?【http://stackoverflow.com/questions/8854359/android-open-failed-eacces-permission-denied】中有位置加错的解决方案,但是我用的Android是不建议加在:
</application>
</manifest>
之间的位置的,给报一个警告,我放到<application>上边去之后,就好了。
3.啊,位置对了,怎么还是没看到真相?那就看你用的Android的版本,这时候的log应该是报:android.os.NetworkOnMainThreadException异常按照【http://www.cnblogs.com/Lewis/p/3298994.html】的说法,基本上4.0之后的版本由于Android考虑到可能引起阻塞,程序假死的情形,就不推荐activity中直接写了,你要真想用的加上:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
加到什么位置?这个我是加到了java文件连接请求的开始位置。
但是经过我用3.0的虚拟机测试,报java.lang.SecurityException: Permission denied (missing INTERNET permission?)异常,之后依旧报:
android.os.NetworkOnMainThreadException异常。用同样的方式也可以解决。
4.正常真相应该已经明了,但是JDK神马的有影响的话,这里也有个解决方案:More digging around and it seems the VPN client has IPv6 disabled which is causing issues with JDK7.If I use the following flag -Djava.net.preferIPv4Stack=true I no longer see the errors. 出自【https://www.java.net/node/703177】
5.还是不行,那你可以尝试所有的都重启一下,重新来过吧【http://stackoverflow.com/questions/17549920/socket-failed-eacces-permission-denied】
6.我的疑团,经过这几番的折腾,看了不少的疑点,也有不少的释疑。但是,我疑团已然还在,奈何!艹,居然把AndroidManifest.xml中的android.permission.INTERNET写成了android.premission.INTERNET!这~~~~原来一切的疑问都是自己问自己~~~一切的疑团都是自己怀疑自己~~一切的恐怖都是自己吓唬自己!
探密结束!
Android之EACCES (Permission denied)与Permission denied异常探密的更多相关文章
- Xamarin.Android UnauthorizedAccessException: Access to the path is denied
进行文件读写,勾选了权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" / ...
- Android filesystem system rw(read/write) permission
/********************************************************************************* * Android filesys ...
- Android 静默安装/后台安装& Root permission
Android 静默安装/后台安装& Root permission 静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需 ...
- Android adb shell data目录,Permission denied
Android adb shell进入data目录,Permission denied 权限被拒绝 在shell里面输入su root,去申请root权限,注意:有小部分手机是需要点击授权,再次执行c ...
- Android开发 adb命令提示:Permission denied (转)
如题:模拟器版本->android 7.1.1 遇到这样的情况把模拟器root一下就好了:su root =============2017年4月3日20:57:33============== ...
- Appium运行时没有启动activity的权限:A new session could not be created.(Original error: Permission to start activity denied)
小白搞appium,遇到启动不了activity的问题: 查找解决方案说是跟AndroidManifest.xml有关系,参考:https://github.com/appium/appium/iss ...
- Apache 403 error, (13)Permission denied: access to / denied问题
Apache 配置Alias 后,无法访问 CentOS系统 检查了一圈httpd.conf和目录权限,均没有发现问题. 最后,看了这篇文章,发现是因为系统启动了SELINUX导致的. http:// ...
- appnium启动报错Encountered internal error running command: Error: Error occured while starting App. Original error: Permission to start activity denied.
说明写错了activity 首先查看一下activity,使用命令 打开被测app,输入命令adb shell dumpsys window | findstr mCurrentFocus 看似这个a ...
- git push 到github时,报错:ERROR: Permission to xxx.git denied to user
之前我电脑的本地git已经登录了一个github账号,今天想换另外一个新的github账户来提交项目,相当于同一台电脑使用两个github账户. 于是我先修改用户名和邮箱. git config -- ...
随机推荐
- hover 变内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Python3 基本数据类型
Python中的变量不需要声明,每个变量使用前必须赋值,变量赋值后才会被创建,在Python中变量就是变量,它没有类型.我们所说的"类型"是变量所指的内存中对象的类型. 等号(=) ...
- 整块div设置为超链接进行界面跳转
鼠标点击当前整块DIV任意一个地方均可进行页面跳转,如果复制过去的代码不能用,请注意双引号和单引号,是否为英文状态下的输入法填写出来的. 1.跳转至新建页面 <div class="& ...
- html5离线应用和缓存
1 localstorage和sessionstorage sessionStrage: session即会话的意思,在这里的session是指用户浏览某个网站时,从进入网站到关闭网站这个时间段,se ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 浅谈ARP协议以及应用
0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...
- ajax方法简单实现
//option {url,medthod,type,data,fSuccess,fError} function ajax(option) { var xhr = window.XMLHttpRqu ...
- 巧用setTimeout解决阻塞导致页面无法重绘
项目中遇到一个javascript问题,大致如下: <!doctype HTML> <html> <head> <meta charset="utf ...
- 深入理解javascript原型和闭包(10)——this
接着上一节讲的话,应该轮到“执行上下文栈”了,但是这里不得不插入一节,把this说一下.因为this很重要,js的面试题如果不出几个与this有关的,那出题者都不合格. 其实,this的取值,分四种情 ...
- 【Bootstrap】Bootstrap-select多选下拉框实现
目录 前言 需要引用的它们 核心选项 核心方法 实例应用 回到顶部 前言 项目中要实现多选,就想到用插件,选择了bootstrap-select. 附上官网api链接,http://silviomor ...