Android读书笔记(四) LitePal、运行时权限、通知的几点说明
来源:互联网 发布:阿里云服务器打开端口 编辑:程序博客网 时间:2024/05/21 00:19
1.LitePal的基本用法
编辑app/bulid.gradle文件,在dependencies中添加内容如下:
dependencies { compile 'org.litepal.android:core:1.6.0'}
配置litepal.xml,在Project目录方式下,项目目录→app→src→main,右键main→New→Diretory,Diretory名为assets,在assets目录下创建litepal.xml文件。在litepal.xml中进行设置,设置如下:
<?xml version="1.0" encoding="utf-8"?><litepal> <dbname value="StudentManagement"></dbname> <version value="1"></version> <list> <mapping class="cn.xd.study.a3.Student"></mapping> </list></litepal>
dbname 数据库名称,version 数据库版本,list映射模型。list所设置的类是数据库中的表,Student类就对应数据库中的Student表。
最后设置一下AndroidManifest.xml。
<application android:name="org.litepal.LitePalApplication" android:label="@string/app_name" ......................> </application>
Student类
public class Student { private int id; private String name; private String gender; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getId() { return id; } public void setId(int id) { this.id = id; }}
任意的数据库操作都会使得在没有数据库的情况下,自动把数据库创建出来。
如果Student类的属性增加了,我们只需要将数据库版本加一就行了,而且原有的数据还存在。
CURD操作
要进行CURD操作,模型类(Student类)必须继承DataSupport类。
public class Student extends DataSupport{ .........................}
- 添加数据
Student student = new Student(); student.setId(110); student.setName("张三"); student.setGender("男"); student.save();
- 更新数据
此种更新只能对已存储的对象进行操作。
Student student = new Student(); student.setId(110); student.setName("张三"); student.setGender("男"); student.save(); student.setGender("女"); student.save();
将id为110的Student的Gender置为女。
Student student = new Student(); student.setGender("女"); student.updateAll("id = ?","110");
将数据更新成默认值,要使用setToDefault()方法。
student.setToDefault("gender");
- 删除数据
删除student表中id为110的数据。
DataSupport.deleteAll(Student.class,"id = ?","110");
- 查询数据
查询Student表的所有数据。
List<Student> students = DataSupport.findAll(Student.class);
获取表中第一条数据
Student students = DataSupport.findFirst(Student.class);
获取表中最后一条数据
Student students = DataSupport.findLast(Student.class);
查询Student表的name这一列数据
List<Student> students = DataSupport.select("name").find(Student.class);
查询Student表中gender为女的数据
List<Student> students = DataSupport.where("gender=?","女").find(Student.class);
除了上面所写的,还有排序、指定查询数量等。
List<Student> students = DataSupport.order("name desc").find(Student.class); List<Student> students = DataSupport.limit(3).find(Student.class);
LitePal支持原生SQL
Cursor cursor = DataSupport.findBySQL("select * from Student where gender=?","女");
2.运行时权限
在6.0及以上系统使用危险权限时都必须使用运行时权限处理。运行时权限是在程序运行过程中由用户授权的操作。
//判断用户是否授权, if (ActivityCompat.checkSelfPermission(Main4Activity.this , Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { //参数一:Activity实例,参数二:在数组中的权限名称,参数三:一般置1 ActivityCompat.requestPermissions(Main4Activity.this , new String[]{Manifest.permission.CALL_PHONE}, 1); } else { call();//打电话 }
如果用户没有授权,调用ActivityCompat.requestPermissions(),系统会弹出对话框来询问是否授权,选择后,程序会跳到onRequestPermissionsResult()方法中,grantResults中存放了授权的结果。接下来判断授权结果,做出相应的动作。
switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {//授权 call(); } else { Toast.makeText(Main4Activity.this, "你禁止了权限", Toast.LENGTH_SHORT).show(); } break; default: }
3.通知的几点说明
为了更好的兼容性,请使用support库中的NotificationCompat.Builder。
NotificationCompat.Builder notification = new NotificationCompat.Builder(Main5Activity.this); .............................. nManager.notify(1, notification.build());
使用BigTextStyle、BigPictureStyle、InboxStyle 等大布局的Style,也要使用 NotificationCompat中的。
关于一些使用NotificationCompat中Style的通知,不能显示的原因是手机系统被更改,被厂商所更改,如:红米1s(该换盆了)。
- Android读书笔记(四) LitePal、运行时权限、通知的几点说明
- 关于Android线程的几点说明
- 关于Android线程的几点说明
- 关于Android 权限管理的几点认识
- hibernate的几点说明
- Smartform的几点说明
- 类的几点说明
- NSNotification的几点说明
- NSNotification的几点说明
- tag的几点说明
- bootloader的几点说明
- Android系统权限(含6.0的运行时权限)
- 《第一行代码Android》(第二版)读书笔记(二):运行时权限
- Android运行时权限(危险权限)
- 关于Android数据库orm工具库对比的几点思考(四)
- C++ 中关于 iostream、源文件命名约定以及运行 GNU (微软)编译器的几点说明
- 《卓有成效的管理》的几点读书笔记
- 关于ural OJ的几点说明(技巧)
- postgresql不同schema下的数据迁移
- 老师模拟练习增删
- pl/sql整库导出和导入
- 从四级区域中找到最后选中的一级
- 【算法】稳定匹配(C++版)
- Android读书笔记(四) LitePal、运行时权限、通知的几点说明
- gulp实战(3)
- Codeforces 877E Danil and a Part-time Job【Dfs序+线段树】
- adb 常用命名
- 达尔文OP2链接WIFI配置(自动连接)
- Gson教程十三:模型版本化、日期格式化、漂亮输出
- 一次python对dll的调用,传递string类型的参数作为调用函数的参数
- GlobalPlatform TEE Protection Profile (PP)Version 1.2.1 A.3 攻击路径举例(一)
- 使用小波变换重构某个节点的信号