Xesygao

  • 首页
  • 学习记录
    • Java学习记录
    • Android学习记录
    • 网站相关
  • 玩机手册
  • 贴吧云签到
  1. 首页
  2. 学习记录
  3. 正文

Android小知识点合集-3月篇

2017年3月12日 10149点热度 0人点赞 4条评论

2017-3-12
使用CoordinatorLayout时上层布局无法获取焦点
做贴吧搜索的时候,点击搜索按钮会把原先不显示的搜索布局显示出来,盖住原布局
但是我发现即使底层布局被上层布局盖住,点击底部布局还是能响应点击事件
这是是因为搜索布局无法获取焦点
在搜索布局的父View加入android:clickable="true"就能正常获取焦点了

2017-3-28
用sqlite存储app信息的时候,把信息存到/data/data/appName/databases/目录下
刚开始用的是

SQLiteDatabase.openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)

安卓7.1上测试没有问题,然而在其他版本的系统上fc
一路排查,发现用上面那个方法,应用没有访问data目录大的权限,无法创建/data/data/appName/databases/目录
于是改用

context.openOrCreateDatabase(String path,int mode,SQLiteDatabase.CursorFactory factory)

就和创建preference文件一样,只有app本身才有权读取

不过还是觉得很奇怪,为什么7.1上就可以访问呢,如果这样那不是可以访问其他app的数据文件?
有个猜想,可能系统检测到是安卓7.1,就调用context的openDatabase()方法
尝试过去查看源码,一路跟踪到/frameworks/base/core/java/android/database/sqlite/SQLiteConnection.java的这个方法

private static native long nativeOpen(String path, int openFlags, String label,boolean enableTrace, boolean enableProfile)

然后找到这个文件/frameworks/base/core/jni/android_database_SQLiteConnection.cpp
还是没有发现他有根据安卓版本做出的不同处理
以后再试试安卓7.1能不能读取其他app的数据库

标签: 暂无
最后更新:2017年7月14日

xesygao

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • xushet

    我想说一下,就是那个消息通知,已读后,还是会在通知栏显示,需要手动清除

    2017年5月22日
    回复
    • xesygao

      @xushet 点击通知就没了,没点击就还在。很多APP都是这样的啊

      2017年5月22日
      回复
  • 高斌

    老大,点请作者喝茶,会崩溃

    2017年5月21日
    回复
    • xesygao

      @高斌 没装支付宝?没处理到没装的异常

      2017年5月21日
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    COPYRIGHT © 2025 Xesygao. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang