Android小知识点合集-3月篇

2017-03-12 - 7,782 Views - 1 Goods - 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的数据库

转载请注明原文链接:首页 -> 学习记录 -> Android小知识点合集-3月篇

FuZhou . FuJian

"Never start something you're not willing to finish"