zoukankan      html  css  js  c++  java
  • android 学习随笔八(异常处理总结)

    1、在android 中开发java.net.SocketException: socket failed: EACCES (Permission denied) 报错

    • 第一反应就是缺少网络权限,然后赶紧检查有没有加入网络访问权限。

    在androidmanifest文件中加入<uses-permission android:name=“android.permission.INTERNET”/>  

    • 用户禁用了你的app的访问网络的权限。注意是单一阻止了。所以根据系统来给你的应用程序开启联网的权限。

    例如小米手机 的操作是:找到“安全中心”app,进入,然后看到“网络助手”,进入,然后点击“联网控制”,找到对应app,查看对应的“数据”和“WLAN”两个选项是否钩上了。
    或者
    java文件网络操作前,加入如下代码

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());  

    • 可能网络操作的代码写在了UI线程里,从android 4.0以后就不允许这样操作了。因为在UI线程里进行网络操作,如果网络不好那么整个程序就容易ANR。所以android4.0以后对要网络操作的代码必须新开一个线程来做。
    • 权限要在<application>标签后面引入才能起作用
    • 网络权限要这样写<uses-permission android:name=“android.permission.INTERNET"/>  而不是这样写<permission  android:name=“android.permission.INTERNET"></permission

    2、Failed to install .apk on device 'emulator-5554': timeout

    打开试图:window->preferences->Android->DDMS

    把ADB CONNECTION...的值5000改为50000.

    3、Eclipse导入Android工程报错 Invalid project description

    解决方法大致归为三条:

    第一:更换目录,这是最简单的,就是把所要导入的项目放到其他非工程目录文件夹下

    第二:修改项目文件夹下的.project文件,里面有一个name标签,使标签名和项目文件夹名相同,此方法经过我的理解和测试,貌似不行,因为我的项目名和文件中的标签名相同,却还是会报这个错误,不过网上有很多人说按照此方法搞定了

    第三:更换导入步骤。一般情况下,我们导入项目的方式是import--android--existing Android code into workspace,其实这是最常用的导入方式,但遇到这样的错误后,我们可以更换为:import-->general-->existing projects into workspace,这样即可成功导入

    4、安卓开发中Theme.AppCompat.Light的解决方法  

    在Eclipse中打开任意一个.java文件,输入 android.R.style. 这时你会看到一个提示列表,仔细看看,再对比一下,看哪个与原有的最接近就选择哪个。用将下划线替换成"."就可了。

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    改为
    <style name="AppBaseTheme" parent="android:Theme.Light">
    同理,将
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    改为
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

    后来发现这个是eclipse的bug,如果你引用的库和你的代码不在一个盘符,就有此异常。
    如果代码在E盘,appCompact的库在D盘,我从新将其移动到E盘就ok。

    5、No resource identifier found for attribute 'showAsAction' in package 'android'

    showAsAction was added in API level 11要将API提升到11,添加 "android-support-v7-appcompat.jar" 到Android库

    检查库引用

     6、android工程gen目录无法生成的解决办法汇总

    • 首先说一下gen目录的用处:Android gen目录下的R.Java并不是由用户创建了,而是android工程本身将android的资源进行自动“编号”(ID)值。
    • 引起gen目录下的R文件无法更新的原因有如下几个:

    (1)、res目录下的layout下的xml文件名有错。按照android的命名规范是:[a-z0-9_.] 这里要看清楚了,是不能大写开头的!导致xml无法被正确解析。

    resdrawableselector_PopUp.xml: Invalid file name: must contain only [a-z0-9_.]

    (2)、layout下的xml文件里面的存在非法字符,一般在eclipse下会进行提示,如果发现有打X的情形,就需要进行修改。特别要注意是半角符号和全角符号,这个错误很隐蔽,大家要小心。还有要符合xml的书写规范。

    (3)、layout下的xml文件里,控件的ID值命名有重复。这个错误很隐蔽,大家要仔细检查。因为eclipse本身并不会报错。

    • 解决方法:

    如果上述的原因都找了,这个时候gen目录下的R依然出错,对android工程进行refresh一下,看R文件是否已经更新。

    还可以将project ->Build Automatically尽心勾选,让eclipse帮你进行自动更新。如果再不行的话,就尝试进行clean一下,看是否会正常得自动生成。

    如果上述的原因都找了,但是源代码依然有错,这个使用你看一下,import android.R 这个包是否被引入了,如果被包含了,请将这个包去掉,否则错误无法解除。

    当DATA为中文,不编码,传到服务器为乱码

    public void getAutoCompleteInfo(String data, SingleServiceState listener) {
            try {
                this.listener = listener;
                String s = URLEncoder.encode(data, "utf-8");
                String url = URL.AUTO_COMPLETE + "?data=" + s + "&types=3,4,5";
                QueueHelpter.add(NetHelper.get(url, JsonArray.class, this));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
    }
  • 相关阅读:
    一个接口的性能问题定位和分析过程
    HTTP请求全过程(很全面)
    Linux中查看物理CPU个数、核数、逻辑CPU个数
    linux查看文件大小
    ping不通判断系统是否开机
    ping不通判断系统是否开机
    linux压缩解压文件命令
    python连接redis集群,添加数据
    初学python
    企业级BI为什么这么难做?
  • 原文地址:https://www.cnblogs.com/ecollab/p/5892539.html
Copyright © 2011-2022 走看看