Android 第七课时 by姚鑫
2020-01-17 14:46:01 4 举报
AI智能生成
Andorid
作者其他创作
大纲/内容
运行时权限
简介
Android 6.0系统中引用了运行时权限这个功能,从而更好的保护用户的安全和隐私
Android权限机制详解
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
安装时提示授权
在使用的过程中提示授权
类别
普通权限
指那些不会直接威胁到用户的安全和隐私的权限,对于这部分授权,系统自动完成
例如打开网络等
除去9组24个权限,其他都是普通权限
危险权限
可能会触及到用户隐私或者设备安全性造成影响的权限,这部分权限需要用户手动去授权
例如设备联系人信息,定位等
9组24个权限
CALENDAR(日历)
READ_CALENDAR
WRITE_CALENDAR
CAMERA(相机)
CAMERA
CONTACTS(联系人)
READ_CONTACTS
WRITE_CONTACTS
GET_ACCOUNTS
LOCATION(位置)
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
RECORD_AUDIO
PHONE(手机)
READ_PHONE_STATE
CALL_PHONE
ERAD_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS
SENSORS(传感器)
BODY_SENSORS
SMS(短信)
SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
STORAGE(存储卡)
READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE
注意,每个危险权都属于一个权限组,在运行时统一其中一个,其他的也都会同意
查看api所有权限
https://developer.android.google.cn/reference/android/Manifest.permission.html
内容提供者(Content Provider)
简介
主要用于在不同的应用程序之间实现数据共享的功能
它提供了一套完成的机制,允许一个程序访问另外一个程序中的数据,同时还能保证被访问数据的安全性
目前,使用内容提供者是Android实现跨程序共享数据的标准方式
特点
不同与文件储存和SharedPreferences存储中的两种全局可读写操作模式
内容提供者可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄漏风险
基本用法
两种用法
一种是现有的内容提供者来读取和操作相应程序总的数据
另一种是 创建自己的内容提供其给我们程序的数据提供外部访问接口。
ContentResolver
通过Context中的getContentResolver()来获取该类的实例
insert(uri, values)
delete(uri , where , selectionargs)
update(uri, values , where ,selectionargs)
query(uri,projection, selection ,selectionargs,order)
ContentResolver 提供来一套CRUD即增删改查
与SQLiteDatabase不同的是
ContentResolver中的增删改查都是不接收表名的
用一个Uri参数来代替,这个参数被成为内容URI
由两部分组成
authority
用于对不同的应用程序做区分的
例如:com.example.app
path
对于同一路径不同的表做区分
例如:table1
标准格式
content://con.example.app/table1
系统Content Provider
读取联系人
URI
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
列名
ContactsContract.CommonDataKinds.Phone.NUMBER
自定义Content Provider
继承ContentProvider类并实现6个抽象反方法
onCreate()
初始化操作,对数据库的创建和升级等操作
query()
insert()
update()
delete()
getType()
传入内容的URI来返回响应的MIME类型
content://con.example.app/table1/1
id为1的数据
content://con.example.app/*
表示匹配任意长度的字符
content://con.example.app/table1/#
表示匹配任意长度的数字
MIME字符串
多用途互联网邮件扩展类型
必须以vnd开头
如果内容URI以路径结尾,则后接android.cursor.dir/,如果内容URI以id结尾。则后接android.cursor.item/
最后街上vnd.<authority>.<path>
实现跨程序数据共享
0 条评论
下一页