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异常探密,布布扣,bubuko.com

时间: 08-09

Android之EACCES (Permission denied)与Permission denied异常探密的相关文章

appium-launch activity选择错误时,提示“A new session could not be created. (Original error: Permission to start activity denied”

capabilities.setCapability("appActivity", ".activities.MainActivity"); 该属性选择错误时提示:A new session could not be created. (Original error: Permission to start activity denied 等同于appium的GUI界面中的launch activity,选择正确的属性值后运行正常 GUI界面选择的是: 运行报错:

Android 静默安装/后台安装&amp; Root permission

Android 静默安装/后台安装& Root permission 静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需要跟systemUI同进程什么的.我不知道他们真的实现了静默安装实现方式,亲测效果跟豌豆荚一样,并且实现起来非常简单: 1.支持静默安装的机器必须Root,这个不需要我多讲了. 2.使用pm指令安装即可.     3.特别注意 PM指令不支持中文,也就说路径中有中文会导致安装失败! 关键代码如下: exec

Android Studio初体验之启动AVD模拟器异常:cannot set up guest memory &#39;pc.ram&#39;

启动AVD模拟器异常:Cannot set up guest memory 'pc.ram' 错误信息: HAX is working and emulator runs in fast virt mode Cannot set up guest memory 'pc.ram': Invalid argument Error accepting connect 分析 各种查资料,没有发现网上有同样问题的,在一篇相关文章中找到类似的解决方法. 从语意看,应该是hax安装后没有启动.(不懂hax是什

android看不见main函数怎么办?程序异常了,可以不提示“xxx软件停止运行”吗?

今天遇到了这个问题,分享一下解决方案. android没有main 函数,自然也就不存在main里面添加异常处理来实现全局异常捕获的方案.那android程序有全局异常补货的解决方案吗? 答案是有的: 那就是你得继承android工程里面的application,如: public class ReaderApplication extends Application implements Thread.UncaughtExceptionHandler{......} 并实现线程异常补货接口:T

Android 网络编程——socket failed: EACES (Permission denied)

当Android网络socket编程时出现如下错误: "socket failed: EACES (Permission denied)" 是因为建立的套接字没有权限对外连接. 解决: 在AndroidManifest.xml文件中,加上这么一句,取得权限 即:<uses-permission android:name="android.permission.INTERNET"/>

android studio命令行错误gradlew: Permission denied

MAC环境下,在命令行下编译cocos2d-x 3.9的pro.android-studio工程时,到后期遇到如下错误: pro.android-studio   gradlew: Permission denied 原因在于gradlew文件没有可执行属性,可以使用命令 ls -l path/filename 来列举文件的已有属性. 之后,使用下列命令为文件添加可执行属性即可: chmod +x gradlew 再次编译,ok.

[ISSUE]Error: Permission to user/repo denied to other-user

机器甲上曾经使用过一个私人github账号A,并且添加了ssh验证 后来为了公共开发,又创建了一个github账号B,提交的时候发现出现错误: remote: Permission to user_B/xxx.git denied to user_A 使用git config, git log 查看用户名都是账号B github上的解决方法(https://help.github.com/articles/error-permission-to-user-repo-denied-to-other

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/issues/4313 之后打开AndroidManifest.xml,在主activity和intent入口处添加:android:exported="true" 问题马上解决,终于可以启动app了! 希望可以帮到新的同学们.

Apache 403 error, (13)Permission denied: access to / denied问题

Apache 配置Alias 后,无法访问 CentOS系统 检查了一圈httpd.conf和目录权限,均没有发现问题. 最后,看了这篇文章,发现是因为系统启动了SELINUX导致的. http://stackoverflow.com/questions/8816836/apache-403-error-13permission-denied-access-to-denied-fedora-16 关闭SELINUX setenforce 0 或 vim /etc/selinux/config 修