这篇博客是用来记录自己在写代码的过程中遇到的一些问题,以及解决方法,做一个总结,算是笔记吧。

1.问题描述:

以某一触发唤醒屏幕

解决方案:

public static void wakeUpAndUnlock(Context context){KeyguardManager km= (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);KeyguardManager.KeyguardLock kl = km.newKeyguardLock("unLock");// 解锁kl.disableKeyguard();// 获取电源管理器对象PowerManager pm=(PowerManager) context.getSystemService(Context.POWER_SERVICE);// 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的TagPowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");// 点亮屏幕wl.acquire();// 释放wl.release();}

注:其中,解锁步骤可以省略。这种情况下,就只是点亮你的屏幕而不会解锁了。

2.问题描述:

除掉Actionbar最左侧的箭头

注意,这个最左侧的的箭头可不是actionbar的icon。如果你去设置它的icon,这样就会导致既有icon也有箭头。

解决方案:

getActionBar().setHomeAsUpIndicator(drawable);

上面的这种方法是适用于API18,而对于API小于18的代码则是不适用的。需要做更多的逻辑。如下:

public static void changeActionBarHomeUpDrawable(Activity activity, int rid) {Drawable homeUp = activity.getResources().getDrawable(rid);final View home = activity.findViewById(android.R.id.home);if (home == null) {// Action bar doesn't have a known configuration, an OEM messed with things.return;}final ViewGroup parent = (ViewGroup) home.getParent();final int childCount = parent.getChildCount();if (childCount != 2) {// No idea which one will be the right one, an OEM messed with things.return;}final View first = parent.getChildAt(0);final View second = parent.getChildAt(1);final View up = first.getId() == android.R.id.home ? second : first;if (up instanceof ImageView) {ImageView upIndicatorView = (ImageView) up;upIndicatorView.setImageDrawable(homeUp);}}

3.问题描述:

Android Private Libraries缺失

如果你的Android Private Libraries是你误删除的话,你可以通过下面的方法1恢复。如果你的项目无原无故的缺失了Android Private Libraries,那么你可以使用下面的方法2修复。

1. 在项目上点击右键,点击Android Tools -> Fix Project Properties 即可
2. android-support-v4重复,删除一个即可

4.问题描述:

Arrays.copyOfRange在低版本的Android中出现NoSuchMethodError异常

对于这个问题的解释,可能要归结于API版本之间的兼容性了。

解决方案:

我的解决方法就是直接重写了这个方法。非常简单粗暴的一个方法,而且很有效。下面是对于Array的一些常用方法的示例源码:

http://commons.apache.org/proper/commons-lang/apidocs/src-html/org/apache/commons/lang3/ArrayUtils.html

5.问题描述:

ListView与动态显示的底部操作栏

你是否遇到过这样的一个问题:你有一个始终位于屏幕底部的Layout,还有一个ListView,它是始终位于屏幕的顶部。当ListView的item过多时,下面的部分item就会被拦住,或是把底部的Layout拦住。

解决方案(一):

对于上面的问题,可能你已经尝试过,使用让Listview位于Layout上方,或是ListView同时位于屏幕顶部和Layout上方。可是尝试过后就会是沮丧的。下面我就分享一个我的技巧:在Layout的外部再套一层Layout,高度为wrap_content。如下:

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_above="@+id/container_relativeLayout"android:layout_alignParentTop="true"android:layout_centerHorizontal="true" ></ListView><RelativeLayoutandroid:id="@+id/container_relativeLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal" ><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Bottom Layout" /></LinearLayout></RelativeLayout></RelativeLayout>

注:可能你会觉得这样是多此一举。因为我可以把ListView的高度设置成match_parent或是fill_parent,再位于Layout之上。这种方式只是适合于,Layout不会被Gone的情况。这里是一个值得注意的地方。

解决方案(二):

可能你会觉得方案一太过繁琐了,那么你可以使用Relayout的另一个属性:layout_alignWithParentIfMissing

android:layout_alignWithParentIfMissing="true"

6.问题描述:

has leaked window com.android.internal.policy.impl.PhoneWindow$ that was originally added here

大致的意思是存在窗口句柄泄露,即未能及时销毁某个PhoneWindow。其实存在这么一种情况,即因我们在非主线程中的某些操作不当而产生了一个严重的异常,从而强制当前Activity被关闭。而在关闭的同时,却没能及时的调用dismiss来解除对ProgressDialog等的引用,从而系统抛出了标题中的错误,而掩盖了真正导致这个错误的异常信息。

解决方案:

重写Activity/Fragment的onDestroy方法,在方法中调用dismiss来解除对ProgressDialog等的引用。

7.问题描述:

Android判断是否能真正上网

普通方法不能判断外网的网络是否连接,比如连接上局域网

解决方案:

public static final boolean ping() {String result = null;try {String ip = "www.baidu.com"; // ping 的地址,可以换成任何一种可靠的外网Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip); // ping网址3次// 读取ping的内容,可以不加InputStream input = p.getInputStream();BufferedReader in = new BufferedReader(new InputStreamReader(input));StringBuffer stringBuffer = new StringBuffer();String content = "";while ((content = in.readLine()) != null) {stringBuffer.append(content);}// ping的状态int status = p.waitFor();if (status == 0) {result = "success";return true;} else {result = "failed";}} catch (IOException e) {result = "IOException";} catch (InterruptedException e) {result = "InterruptedException";} finally {Log.d("----result---", "result = " + result);}return false;}

8.问题描述:

获取手机号码

解决方案:

private String getPhoneNumber() {TelephonyManager telephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); return telephonyMgr.getLine1Number(); }

添加权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

9.问题描述:

lost serialVersionUID

在开发过程中,有时我们会遇到“The serializable class CommonException does not declare a static final serialVersionUID field of type long”这样的一个报警异常。类似下面这样的:

我们需要这个值的原因是我们要把这个值永久地保存在一个磁盘上,通常是一个文件中。还有一点是我们要把这个对象在网络中传输。

解决方案:

add上面的3 quick fixes available中的一个。通常是去add第二个。

10.问题描述:

如何隐藏底部状态栏(System Bar)

底部导航栏如下:

隐藏方式:

在onCreate中添加如下代码:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

11.问题描述:

获得屏幕在旋转过程中的旋转角度

这里我们获得的不只是横屏还是竖屏的问题。而是更细一点的区分,比如横屏中的是和左旋转了90度,还是向右旋转了90.解决方案如下:

WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
mRotation = manager.getDefaultDisplay().getRotation();

12.问题描述:

Installation error: INSTALL_FAILED_VERSION_DOWNGRADE

安装新的Apk时,出现以上报错信息。这是是因为Manifest中的android:versionCode属性,手机里APP的versionCode高于将要安装的APP。

解决方案:

1.卸载原来的Apk

2.将当前的Apk的versionCode属性值修改到比手机中Apk的versionCode属性值大即可。

大家还可以参见一些Android其他的细节总结:

Android细节问题总结(一)

Android细节问题总结(二)相关推荐

  1. Android架构组件(二):LiveData

    前言 上篇文章我们分析了Lifecycle的使用和原理,相信我们已经学会了用Lifecycle将你所需的类添加声明周期管理,如果只是寥寥阅读也没关系,这里奉上(双膝跪地)上篇地址,Android架构组 ...

  2. Android 天气APP(二十一)滑动改变UI、增加更多天气数据展示,最多未来15天天气预报

    上一篇:Android 天气APP(二十)增加欢迎页及白屏黑屏处理.展示世界国家/地区的城市数据 前言   写APP是有很多细节需要处理的,这些细节可以提高你的APP的使用概率.这已经是第二十一篇文章 ...

  3. Android 天气APP(二十九)壁纸设置、图片查看、图片保存

    上一篇:Android 天气APP(二十八)地图搜索定位 效果图 开发流程 一.前情提要 二.正式开发 1. 列表数据填充 2. 浮动按钮的交互 3. 其他优化 4. 运行效果图 三.文末 一.前情提 ...

  4. Android Linker详解(二)

    Android Linker详解(二) Android Linker详解(二) 本文目的 So的链接 So重定位 总结 本文目的 接上篇Linker源码详解(一),本文继续来分析Linker的链接过程 ...

  5. android开发实验报告二,《Android 移动应用开发》实验报告-范本2(33页)-原创力文档...

    实验1<Android活动的使用> 实验学时: 2 每组人数: 1 实验类型: 1 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 1 (1:必修 2:选修 3:其它) 实 ...

  6. Java IO在Android中应用(二):APK加固

    Java I/O在Android中应用(二):APK加固套壳 前言(废话) 我,有两把键盘,第一把是Poker III(黑轴),第二把是Poker II(红轴).工作的时候我常用的是红轴的Poker ...

  7. Android Contextual Menus之二:contextual action mode

    Android Contextual Menus之二:contextual action mode 接上文:Android Contextual Menus之一:floating context me ...

  8. Android studio使用心得(二)— 打包签名apk发布

    1.-–Android Studio菜单   Build->Generate Signed APK 2.--Create new.. 3.---跟eclipse里面一样,添加keystore 信 ...

  9. Android多线程分析之二:Thread的实现

    Android多线程分析之二:Thread的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前文<Android多线程分析之一:使 ...

最新文章

  1. android jni ndk 视频分享
  2. Linux下安装Elasticsearch6.x
  3. 基于C#在Mongodb的Skip-Limit和Where-Limit的分页对比 并且含mongodb帮助类的源码
  4. 搭建分布式FastDFS集群
  5. chrome 插件 页面请求转发_使用chrome扩展程序及jsonp实现跨域访问
  6. 【知识图谱】本周文献阅读笔记(3)——周二 2023.1.10:英文)知识图谱补全研究综述 + 网络安全知识图谱研究综述 + 知识图谱嵌入模型中的损失函数 + 图神经网络应用于知识图谱推理的研究综述
  7. select函数介绍
  8. 计算机网络 FDM TDM
  9. 热点推荐:程序员“奇葩”说
  10. 400 (Bad Request)错误的解决方法
  11. Blackbox_exporter概述
  12. 更换matlab版本需要注意事项,AMD 篇四:更换Matlab调用MKL库版本
  13. MySQL中定时任务的使用
  14. 计算几何——向量的叉乘、点乘、夹角
  15. java健康检查代码_SpringBoot实现项目健康检查与监控
  16. LabVIEW编程LabVIEW开发欧姆龙E5CC温控器 例程与相关资料
  17. 英语句子成分分析(三)--主(语)+系(动词)+表(语)
  18. 中国大学MOOC-陈越、何钦铭-数据结构-2019秋期末考试
  19. javascript学习笔记整理
  20. MySQL服务器时间同步问题

热门文章

  1. C++ Primer 5th笔记(chap 15 OOP)访问控制与继承
  2. [ACTF新生赛2020]fungame
  3. 【Python植物大战僵尸军团来袭】“大家快醒一醒、一大波僵尸来了”
  4. 00-深入学习cache
  5. 3-Arm CPU Specific Build Macros
  6. Windows RDP协议 Fuzzing 漏洞挖掘研究
  7. 1.7 Character类
  8. 【PAT乙级】1083 是否存在相等的差 (20 分)
  9. 项目: 用数组实现反弹球消砖块
  10. 如何转载别人的CSDN文章