Android之——常见Bug及其解决方案

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46942139

1.android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

解决方案:将getApplication改成xxxx.this

2.call you are unregister onbrocastRevicer?

解决方案:忘记注销广播

3.Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE表示某个应用没有卸载完成

4.出现launch Activtiy not found ?因为这个Activity没有写main 和luncher参数

5.R.java was removed! Recreating R.java!

6.com.process.acore 表示的是这个应用程序有电话拨号进程

7.android.database.CursorIndexOutOfBoundsException解决方案:原因是应该先调用cursor.moveToFirst();。

数据库查询得到的cursor里面只有1个结果,你却查找第-1个,肯定不对

8.launcher.apk启动程序在启动动画页面卡住,原因是开机动画很暂用cpu,如果luancher里面的某部分代码阻塞了,或者某个自定义view中部分代码太占用CPU导致的。

9.java.lang.IllegalStateException: The specified child al

ready has a parent. You must call removeView() on the child‘s parent first,表示是缺少对象,

解决方法:查找对象是否还在,要么就是多次事例化了

10.java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131230732, class
android.widget.ListView) with Adapter(class com.cardroid.sdhc.medialist.SDMediaListAdapter)]

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.widget.ListView.layoutChildren(ListView.java:1492)

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.widget.AbsListView.onTouchEvent(AbsListView.java:2124)

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.widget.ListView.onTouchEvent(ListView.java:3315)

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.view.View.dispatchTouchEvent(View.java:3918)

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:898)

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:937)

01-01 00:51:06.320: ERROR/AndroidRuntime(4035):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:937)

解决方案:放入主线程中运行,因为此时这个LISTVIEW 加载ADAPTER是放入AsyTask里面运行的

11.Database( 2284): sqlite returned: error code = 14, msg = prepared

> statement aborts at 4: [DELETE FROM android_metadata]

> Database( 2284): DELETE failed setting locale

> Database( 2284): Failed to setLocale() when constructing, closing the

> database

> Database( 2284): android.database.sqlite.SQLiteException: unable to open

> database file

> Database( 2284):      at

> android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)

> Database( 2284):      at

> android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)

> Database( 2284):      at

> android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)

> Database( 2284):      at

> android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)

> Database( 2284):      at

> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)

> Database( 2284):      at

> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)

> Database( 2284):      at

> android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:542)

> Database( 2284):      at

> android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)

> Database( 2284):      at

> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)

> Database( 2284):      at

> android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)

> Database( 2284):      at

> com.android.providers.media.MediaProvider.query(MediaProvider.java:1287)

> Database( 2284):      at

> com.android.providers.media.MediaProvider.attachVolume(MediaProvider.java:3045)

> Database( 2284):      at

> com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1945)

> Database( 2284):      at

> com.android.providers.media.MediaProvider.insert(MediaProvider.java:1665)

> Database( 2284):      at android.content.ContentProvider

> $Transport.insert(ContentProvider.java:174)

> Database( 2284):      at

> android.content.ContentResolver.insert(ContentResolver.java:587)

> Database( 2284):      at

> com.android.providers.media.MediaScannerService.openDatabase(MediaScannerService.java:65)

> Database( 2284):      at

> com.android.providers.media.MediaScannerService.scan(MediaScannerService.java:113)

> Database( 2284):      at

> com.android.providers.media.MediaScannerService.access

> $400(MediaScannerService.java:53)

> Database( 2284):      at com.android.providers.media.MediaScannerService

> $ServiceHandler.handleMessage(MediaScannerService.java:283)

> Database( 2284):      at

> android.os.Handler.dispatchMessage(Handler.java:99)

> Database( 2284):      at android.os.Looper.loop(Looper.java:123)

> Database( 2284):      at

> com.android.providers.media.MediaScannerService.run(MediaScannerService.java:197)

> Database( 2284):      at java.lang.Thread.run(Thread.java:1096)

> SQLiteOpenHelper( 2284): Couldn‘t open external.db for writing (will try

> read-only):

> SQLiteOpenHelper( 2284): android.database.sqlite.SQLiteException: unable

> to open database file

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)

> SQLiteOpenHelper( 2284):      at

> android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:542)

> SQLiteOpenHelper( 2284):      at

> android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)

> SQLiteOpenHelper( 2284):      at

> android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaProvider.query(MediaProvider.java:1287)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaProvider.attachVolume(MediaProvider.java:3045)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1945)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaProvider.insert(MediaProvider.java:1665)

> SQLiteOpenHelper( 2284):      at android.content.ContentProvider

> $Transport.insert(ContentProvider.java:174)

> SQLiteOpenHelper( 2284):      at

> android.content.ContentResolver.insert(ContentResolver.java:587)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaScannerService.openDatabase(MediaScannerService.java:65)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaScannerService.scan(MediaScannerService.java:113)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaScannerService.access

> $400(MediaScannerService.java:53)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaScannerService

> $ServiceHandler.handleMessage(MediaScannerService.java:283)

> SQLiteOpenHelper( 2284):      at

> android.os.Handler.dispatchMessage(Handler.java:99)

> SQLiteOpenHelper( 2284):      at android.os.Looper.loop(Looper.java:123)

> SQLiteOpenHelper( 2284):      at

> com.android.providers.media.MediaScannerService.run(MediaScannerService.java:197)

> SQLiteOpenHelper( 2284):      at java.lang.Thread.run(Thread.java:1096)

解决方案:DBHELPER打开数据库的链接后,没有关闭,导致下次进入有问题,同时有的把数据库放入SDCARD,要加SDCARD的权限。

12.在LINUX下面出现R。JAVA文件不生成的时候,是因为SDK下面的platforms/android-8/tools要加权限,为了方便常用

platforms/android-8/tools$ chmod a+x *

13: 问题描述:E/WindowManager( 5523): android.view.WindowLeaked: Activity com.cardroid.sdhc.medialist.SDMediaListActivity has leaked window [email protected]
that was originally added here

解决方案:即未能及时销毁某个PhoneWindow。当前Activity被关闭。而在关闭的同时,却没能及时的调用dismiss来解除对ProgressDialog等的引用,从而系统抛出了标题中的错误,而掩盖了真正导致这个错误的异常信息。需要在ONDESTORY方法时候关闭一些DIALOG。

14:问题描述,在拨打电话的时候配置文件中已经添加了权限,但是提示还需要添加权限requires android.permission.CALL_PHONE

W/dalvikvm( 5709): threadid=1: thread exiting with uncaught exception (group=0x40015568)

W/ActivityManager(  201): Permission Denial: starting Intent {

act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx cmp=com.android.phone/.OutgoingCall

Broadcaster } from ProcessRecord{408c2550 5709:com.um.mplus/10072} (pid=5709, uid=10072)

requires android.permission.CALL_PHONE

E/AndroidRuntime( 5709): FATAL EXCEPTION: main

E/AndroidRuntime( 5709): java.lang.SecurityException: Permission Denial: starting Intent {

act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx cmp=com

.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{408c2550

5709:com.um.mplus/10072} (pid=5709, uid=10072) requires android.permission.CALL_PHONE

解决问题:因为这个权限,有的系统级别作了限制,所以,添加抓取异常就可以了。

1. 如果你的项目的R文件不见的话,可以试下改版本号在保存,R文件不见一般都是布局文本出错导致.

2. 布局文件不可以有大写字母

3. 抛出如下错误WARNING: Application does not specify an API level requirement!,

是由于没有指定users sdk的缘故,修改AndroidManifest.xml文件.

加入:<uses-sdkandroid:minSdkVersion="8"></uses-sdk>

4. 机器内存的瓶颈,当apk大于我们的机器内存时,模拟器无情的抛出

Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE Please check logcat output for more details. Launch canceled!

让我们无法调试,现在我们来根治这个问题,解决方法有两种

第一种(仅限apk小于机器内存,并且已安装上当前apk,只是无法再次debug)

启动模拟器,然后进入菜单

settings->applications->mange

applications-> select the application->select "unistall".

这样就能彻底删除了,然后再重新安装这个apk就没问题了

第二种(通用)

-partition-size 128

Eclipse中在项目Target的Options中添加。

5. 启动android模拟器时候如果提示:Failed to install on device ‘emulator-5554′: timeout

这是可能因为卡的原因导致启动超时,解决办法:eclipse -> window -> Preferences -> Android -> DDMS -> ADB connection time out(ms).把这个时间设置的长一些,默认是5秒即5000ms, 我改成10秒就ok了。

这样就不用每次重启模拟器了。具体时间设置根据实际环境需要

6. 在开发的过程中经常在安装apk到模拟器上时会报出

ActivityManager: Error: Activity class {..} does not exist.

这样的错误,这里总结两种解决方式:

在AndroidManifest.xml文件中查看主Activity的名字前是否有‘.‘符

7 运行Eclipse时出现了这个错误

No Launcher activity found!

The launch will only sync the application package on the device!

解决办法

在AndroidManifest.xml 中添加

<category android:name="android.intent.category.LAUNCHER" />

8 出现如下错误,没有写入sd卡权限 java.io.FileNotFoundException: /mnt/sdcard/update.zip (Permission denied)

解决办法,资源文件写入如下权限

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

温馨提示:本文中涉及到的典型Bug及其解决方案都是本人截止到目前在实际项目中总结的,由于本人工作年限有限,以后在实际工作中可能会遇到其他一些Bug,本人会一如既往的总结工作中出现的问题和解决方案,所以,本文以后会持续更新。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-03 03:30:48

Android之——常见Bug及其解决方案的相关文章

H5 播放视频常见bug及解决方案

本文摘自:本文来自“小时光茶社(Tech Teahouse)”公众号 原文:https://mp.weixin.qq.com/s/MM5ZwCiWLAeHalsNYMImnw 1. 自动播放问题 通过autoplay属性视频的自动播放需要在video标签上添加autoplay属性, 如: <video autoplay><video/> 但是在很多浏览器里,如iOS下并不支持这个属性,在iOS下必须给webview设置: self.wView.allowsInlineMediaPl

Android NDK常见配置问题的解决方案

添加NDK包时出现"Not a valid NDK directory" 在解压的android-ndk-rxxx文件夹中新建一个txt文件,将名字包括后缀更改为ndk-build,刷新文件夹和工程并重新加载,仍无效的话稍后再次刷新重新加载. javah提示错误: 找不到 'com.XXX.XXX.xxx' 的类文件.科学解决方案. 对于此问题网上有N种解决方案,在各个试探之后给出最科学可行的解决方案: 例:我的项目目录为D:\Eclipse\workspace\Android_NDK

[ 打败 IE 的葵花宝典 ] IE6中css常见BUG全集及解决方案

IE6双倍边距bug 当页面内有多个连续浮动时,如本页的图标列表是采用左浮动,此时设置li的左侧margin值时,在最左侧呈现双倍情况.如外边距设置为10px, 而左侧则呈现出20px,解决它的方法是在浮动元素上加上display:inline;的样式,这样就可避免双倍边距bug. 3像素问题及解决办法 当使用float浮动容器后,在IE6下会产生3px的空隙,有意思的是右侧容器没设置高度时3px在右侧容器内部,当设定高度后又跑到容器的左侧了,所以对布局精度要求高的话,请参考例29.31的解决方

移动端常见bug汇总

点击样式闪动 Q: 当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景. A:根本原因是-webkit-tap-highlight-color,这个属性是用于设定元素在移动设备(如Adnroid.iOS)上被触发点击事件时,响应的背景框的颜色.建议写在样式初始化中以避免所以问题:div,input(selector) {-webkit-tap-highlight-color: rgba(0,0,0,0);}另外出现蓝色边框:outline:none

Android实现推送方式解决方案

Android实现推送方式解决方案 本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息.这种推送功能是好的一面,但是也会经常看到很多推送过来的垃圾信息,这就让我们感到厌烦了,关于这个我们就不能多说什么了,毕竟很多商家要做广告.本文就是来探讨下Android中实现推送功能的一些解决方案,也希望能够起到抛砖引玉的作用.^_^ 1.推送方式基础知识: 在移

windows蓝屏代码大全及常见蓝屏解决方案

对于以下的代码查询建议使用ctrl+F查询,而且很多蓝屏与黑屏的问题多是最近操作引起的,例如更新驱动,安装新的硬件.软件--把相关的配置调到最近的正常状况大多可以解决,确实不行时方可考虑重装系统,解决问题的大法,不过重装系统前请注意做好备份工作! 蓝屏代码含义 (代码已经做了省略,每个的x后面都少了4个0) 0 0x0000 作业完成.1 0x0001 不正确的函数.2 0x0002 系统找不到指定的档案.3 0x0003 系统找不到指定的路径.4 0x0004 系统无法开启档案.5 0x000

【转】Android实现推送方式解决方案

本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息.这种推送功能是好的一面,但是也会经常看到很多推送过来的垃圾信息,这就让我们感到厌烦了,关于这个我们就不能多说什么了,毕竟很多商家要做广告.本文就是来探讨下Android中实现推送功能的一些解决方案,也希望能够起到抛砖引玉的作用.^_^ 1.推送方式基础知识:  在移动互联网时代以前的手机,如果有事情

转:移动开发中一些bug及解决方案

网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个我在开发中遇到的比较难缠问题,和解决方案,给其他朋友提个醒,因为一旦碰到了这些bug,虽然解决方法不难,但是你可能要花上几个小时,几天,甚至更长时间才能解决它们,遇到这些bug的话要注意,以后发现其他bug也会继续补充,也希望你也可以把你遇到的bug或者解决方案回复给我,我会一起补充到文章里,帮助其

关于cocos2dx程序的BUG调试解决方案

今天说一下手机游戏开发的调试问题吧.不得不说的是和PC平台游戏.软件开发相比,手机上开发游戏和软件要困难的多.原因是多方面的,比如说开发环境比较复杂,工具软件不够人性化等等. cocos2dx的出现解决了一个很大的问题,因为他是跨平台的,相对来说windows的软件开发环境比较友好,对中国程序员来说更熟悉.这样可以在windows进行日常开发和调试,然后在发布到其它平台的时候进行少量的处理就好了. cocos2dx程序的调试,在windows下和端游类似,可以在后台窗口进行打印,也可以直接在vs