android contactsprovider 启动流程,Android开机启动流程初探
时间: 2023-07-11 10:31:01 浏览: 141
好的,针对你的问题,我回答如下:
Android ContactsProvider 启动流程:
1. 当应用程序或系统需要访问联系人数据时,会通过 ContentResolver 类向 ContactsProvider 发送请求。
2. ContactsProvider 根据请求的 URI 分析其要执行的操作,并将请求转发给对应的 ContentProvider。
3. ContentProvider 根据请求的操作类型(如查询、插入、更新、删除等),使用 SQLite 数据库进行相应的操作,并返回结果给 ContactsProvider。
4. ContactsProvider 将结果返回给请求方的 ContentResolver,请求方可以通过 ContentResolver 获取到所需的联系人数据。
Android 开机启动流程:
1. 首先,系统会加载 bootloader,这是 Android 系统的第一个启动程序。
2. bootloader 会加载 kernel,并启动 Android 系统。
3. kernel 会初始化硬件设备,并启动 init 进程。
4. init 进程会读取 init.rc 配置文件,并启动系统中的各个服务和应用。
5. 在 init.rc 文件中,可以配置启动顺序、启动条件等参数。
6. 各个服务和应用启动后,会通过 Binder 机制进行进程间通信,共同组成完整的 Android 系统。
以上是 Android 开机启动流程的大致过程,具体实现细节还有很多,这里只是做了简单的介绍。
相关问题
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{1a70ba3 18171:com.example.test1/u0a133} (pid=18171, uid=10133) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
这个错误是因为你的应用程序没有被授予读取或写入联系人的权限。你需要在你的AndroidManifest.xml文件中添加以下代码:
```
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
```
这将请求用户授予你的应用程序读取和写入联系人的权限。确保在运行时请求这些权限,以便在用户同意之前不会访问联系人。同时,你需要确保在代码中请求这些权限,可以使用以下代码:
```
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS}, 0);
```
这将请求用户授予你的应用程序读取和写入联系人的权限。在用户同意之前,你的应用程序将无法访问联系人。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test1/com.example.test1.InboxActivity}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{9d7cdbd 18018:com.example.test1/u0a133} (pid=18018, uid=10133) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
这个错误是因为你的应用程序没有被授予读取或写入联系人的权限。你需要在你的AndroidManifest.xml文件中添加以下代码:
```
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
```
这将请求用户授予你的应用程序读取和写入联系人的权限。确保在运行时请求这些权限,以便在用户同意之前不会访问联系人。同时,你需要确保在代码中请求这些权限,可以使用以下代码:
```
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS}, 0);
```
这将请求用户授予你的应用程序读取和写入联系人的权限。在用户同意之前,你的应用程序将无法访问联系人。
阅读全文