问题描述:

外接U盘长点击一文件夹选中后拨出OTG线提示停止运行

log内容:

----- timezone:GMT
11-22 10:19:48.753412  5655  5655 E AndroidRuntime: FATAL EXCEPTION: main
11-22 10:19:48.753412  5655  5655 E AndroidRuntime: Process: com.android.documentsui, PID: 5655
11-22 10:19:48.753412  5655  5655 E AndroidRuntime: java.lang.RuntimeException: Unable to destroy activity {com.android.documentsui/com.android.documentsui.FilesActivity}: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4298)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4316)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.ActivityThread.-wrap6(ActivityThread.java)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1588)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:110)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.os.Looper.loop(Looper.java:203)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:6251)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime: Caused by: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:63)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.database.BulkCursorToCursorAdaptor.getCount(BulkCursorToCursorAdaptor.java:69)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.database.CursorWrapper.moveToPosition(CursorWrapper.java:197)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.RootCursorWrapper.onMove(RootCursorWrapper.java:79)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:236)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.FilteringCursorWrapper.onMove(FilteringCursorWrapper.java:152)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:236)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.dirlist.Model.getItem(Model.java:450)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.dirlist.DirectoryFragment$SelectionModeListener.onItemStateChanged(DirectoryFragment.java:519)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.dirlist.MultiSelectManager.notifyItemStateChanged(MultiSelectManager.java:532)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.dirlist.MultiSelectManager.clearSelectionQuietly(MultiSelectManager.java:287)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.dirlist.MultiSelectManager.clearSelection(MultiSelectManager.java:262)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at com.android.documentsui.dirlist.DirectoryFragment.onDestroyView(DirectoryFragment.java:218)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.Fragment.performDestroyView(Fragment.java:2570)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1153)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:2067)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.FragmentController.dispatchDestroy(FragmentController.java:242)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.Activity.performDestroy(Activity.java:6867)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1153)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4285)
11-22 10:19:48.753412  5655  5655 E AndroidRuntime:     ... 9 more

分析解决:

11-22 10:19:48.753412  5655 5655 E AndroidRuntime: java.lang.RuntimeException: Unable to destroyactivity {com.android.documentsui/com.android.documentsui.FilesActivity}:android.database.StaleDataException: Attempted to access a cursor after it hasbeen closed.

crash原因是不能销毁活动,引起的原因是旧数据异常:试图访问一个已经关闭的游标。

根据报错log:at com.android.documentsui.dirlist.DirectoryFragment$SelectionModeListener.onItemStateChanged(DirectoryFragment.java:519)

public void onItemStateChanged(StringmodelId,boolean selected){

finalCursor cursor=mModel.getItem(modeId);

StringmimeType=null;

if(cursor==null){

……

}

}

应该是这里的cursor在拔掉OTG线的时候关闭了,而选中操作的监听事件还在试图引用cursor,这也直接导致了atcom.android.documentsui.dirlist.DirectoryFragment.onDestroyView(DirectoryFragment.java:218)这个方法报错,即无法销毁活动。

解决方法是设置一个布尔标志位isDestroyView,默认为false,当拔出OTG线也就是视图要销毁的时候,设为true,在onItemStateChanged方法中增加判断语句,如下

public void onItemStateChanged(StringmodelId,boolean selected){

if(isDestroyView){

return;

}

finalCursor cursor=mModel.getItem(modeId);

StringmimeType=null;

if(cursor==null){

……

}

}

当视图销毁后就不进行事件的监听操作了。

不要忘记在onCreateView中对标志位进行恢复操作,置为false。

问题描述:横屏显示导致导航栏报错

log内容:

01-01 16:58:27.265 D/AndroidRuntime( 9998): Shutting down VM
01-01 16:58:27.266 E/AndroidRuntime( 9998): FATAL EXCEPTION: main
01-01 16:58:27.266 E/AndroidRuntime( 9998): Process: com.android.systemui, PID: 9998
01-01 16:58:27.266 E/AndroidRuntime( 9998): android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@57f46fc -- another window of type 2019 already exists
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at android.view.ViewRootImpl.setView(ViewRootImpl.java:789)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at com.android.systemui.statusbar.phone.NavigationBarFragment.create(NavigationBarFragment.java:726)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at com.android.systemui.statusbar.phone.StatusBar.createNavigationBar(StatusBar.java:1225)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at com.android.systemui.statusbar.phone.StatusBar.showNavigationBar(StatusBar.java:1239)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:506)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at android.os.Handler.dispatchMessage(Handler.java:105)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at android.os.Looper.loop(Looper.java:164)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at android.app.ActivityThread.main(ActivityThread.java:6565)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at java.lang.reflect.Method.invoke(Native Method)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
01-01 16:58:27.266 E/AndroidRuntime( 9998):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

分析原因:

已经存在一个type类型为2019的view,这里应该是创建view导致的,创建的方法是NavigationBarFragment.create,调用该方法进行创建的位置是createNavigationBar,生成的对象是mNavigationBarView,导致问题的原因应该就是它重复创建了,showNavigationBar调用createNavigationBar,最终是在showNavigationBar中实现创建,这里添加判断条件,当还存在相应的view时,不进行view创建。如下

if(showNav && mNavigationBarView ==null && mNavigationBar ==null){createNavigationBar();}

问题描述:

从文件管理器中使用音乐应用播放音乐报错

log内容:

FATAL EXCEPTION: main
01-01 13:22:35.082 E/AndroidRuntime( 9524): Process: com.android.music, PID: 9524
01-01 13:22:35.082 E/AndroidRuntime( 9524): java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=100, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.android.music/com.codeaurora.music.custom.PermissionActivity}: java.lang.SecurityException: UID 10095 does not have permission to content://com.android.providers.media.documents/document/audio%3A299 [user 0]; you could obtain access using ACTION_OPEN_DOCUMENT or related APIs
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.ActivityThread.deliverResults(ActivityThread.java:4327)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:4370)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.ActivityThread.-wrap19(Unknown Source:0)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1652)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.os.Handler.dispatchMessage(Handler.java:105)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.os.Looper.loop(Looper.java:164)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.ActivityThread.main(ActivityThread.java:6565)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at java.lang.reflect.Method.invoke(Native Method)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
01-01 13:22:35.082 E/AndroidRuntime( 9524): Caused by: java.lang.SecurityException: UID 10095 does not have permission to content://com.android.providers.media.documents/document/audio%3A299 [user 0]; you could obtain access using ACTION_OPEN_DOCUMENT or related APIs
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.os.Parcel.readException(Parcel.java:1942)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.os.Parcel.readException(Parcel.java:1888)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4365)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1612)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Activity.startActivityForResult(Activity.java:4472)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Activity.startActivityForResult(Activity.java:4430)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Activity.startActivity(Activity.java:4791)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Activity.startActivity(Activity.java:4759)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at com.codeaurora.music.custom.PermissionActivity.onRequestPermissionsResult(PermissionActivity.java:127)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7388)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.Activity.dispatchActivityResult(Activity.java:7239)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     at android.app.ActivityThread.deliverResults(ActivityThread.java:4323)
01-01 13:22:35.082 E/AndroidRuntime( 9524):     ... 9 more

分析解决:

根据log:Caused by: java.lang.SecurityException: UID 10095 does not have permission to content://com.android.providers.media.documents/document/audio%3A299 [user 0]; you could obtain access using ACTION_OPEN_DOCUMENT or related APIs,在对应位置给intent添加action,如下

mPreviousIntent.setAction(Intent.ACTION_OPEN_DOCUMENT);

Android crash解决集锦相关推荐

  1. idcardweb装入失败_vpk安装错误0xffffe Android Crash问题分析以及解决 - 硬件设备 - 服务器之家...

    vpk安装错误0xffffe Android Crash问题分析以及解决 发布时间:2017-04-10 来源:服务器之家 1.问题介绍 Crash问题,无论是java侧还是native侧,在日常测试 ...

  2. Android开发问题集锦

    本文来自:安卓航班网 简介:这是[Android底层开发]Android开发问题集锦,介绍了和java,有关的知识.技巧.经验,和一些java源码等. 1.Android Market上发软件要注意哪 ...

  3. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18)

    1.android开发新浪面试题[开发者必看哦] 下载地址 http://www.eoeandroid.com/thread-177885-1-1.html 2.华为关于android笔试题案例解析 ...

  4. 【Android面试】Android面试题集锦 (陆续更新)

    [Android面试]Android面试题集锦 (陆续更新) 分类: [杂七杂八]2011-05-11 17:58 2064人阅读 评论(0) 收藏 举报 一些常见的Android面试基础题做下总结, ...

  5. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的

    ===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦] 下载地址 http://www.eoean ...

  6. Android - Android Studio 解决访问被墙的问题

    Android - Android Studio 解决访问被墙的问题 参考文章: (1)Android - Android Studio 解决访问被墙的问题 (2)https://www.cnblog ...

  7. Android实例-解决虚拟键盘遮挡问题(XE8+小米2)

    Android实例-解决虚拟键盘遮挡问题(XE8+小米2) 参考文章: (1)Android实例-解决虚拟键盘遮挡问题(XE8+小米2) (2)https://www.cnblogs.com/FKde ...

  8. Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题

    Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题 参考文章: (1)Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题 ...

  9. Android AutoWrapTextView 解决中英文排版问题

    Android AutoWrapTextView 解决中英文排版问题 参考文章: (1)Android AutoWrapTextView 解决中英文排版问题 (2)https://www.cnblog ...

最新文章

  1. 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
  2. Apache TomEE(和Tomcat)的自签名证书
  3. [NHibernate] NHibernate对象关系映射工具了解
  4. C++ Builder 启动时不显示主窗体
  5. 模拟驾驶能力输出,赋能客户提升稳定性信心
  6. [C++] 在连续统上的重复性质:滑动窗口
  7. 【免费毕设】ASP.NET基于.NET的城市公交查询系统的实现与设计(源代码+lunwen)
  8. python基础数据结构,Python基本数据结构
  9. linux服务器时间不一致,Linux服务器时间不准确
  10. 3DS更新R4烧录卡内核
  11. excel身份证号提取出生日期
  12. 【TVM帮助文档学习】Relay的模式匹配
  13. 小程序、容器、SCF、直播加速…最全面的云端架构技术揭秘
  14. 如何重新安装正版Win10
  15. linux关于消息队列中消息的大小的限制
  16. Unity优化 详谈GetComponent
  17. “Git 是我用过最笨重的软件”!喷完 C++ 喷 Git,这位 Azure CTO 到底何许人也?...
  18. 微信公众号编辑菜单栏代码
  19. 用于身份管理的区块链:需要考虑的影响
  20. egg-jwt egg jwt 使用

热门文章

  1. 解决iconfont下载的图标显示的是小方框
  2. 慈溪市2021高考成绩查询,2021慈溪市普高排名一览表
  3. 利用pyecharts实现公交地铁站点地理信息地图可视化
  4. ARMA-GARCH模型与单独的ARMA模型和GARCH模型有什么区别
  5. python 财务报表 建模_Python进行统计建模
  6. 校园网服务器系统方案设计,校园网改造方案的设计与实现
  7. eps罗马柱头制作方法_eps罗马柱—eps罗马柱有哪些种类?
  8. 从零到一的react.js+node.js+express.js+mysql产品开发全流程
  9. 前端学不动了怎么办?3年,5年,10年,都需要规划!
  10. x64驱动:DKOM 实现进程隐藏