首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java.lang.SecurityException试图从Android Contacts URI中读取

在Android应用程序中,当试图从Android Contacts URI中读取数据时,会抛出java.lang.SecurityException异常。这是因为Android的Contacts URI是受保护的,只有系统应用程序才能访问它,以防止恶意应用程序窃取用户数据。

为了解决这个异常,开发人员可以采取以下措施:

1.使用Android系统的Contacts Provider API来访问联系人数据。此API提供了一个可以访问联系人数据的抽象层,而无需直接使用Contacts URI。

2.请求系统权限,以访问联系人数据。这可以通过在AndroidManifest.xml文件中添加权限来实现,或者通过在应用程序的代码中请求权限来完成。

3.使用第三方库,例如Android Contact Manager,它是一个用于访问联系人数据的轻量级库,可以帮助开发人员轻松处理联系人数据。

总之,开发人员需要采取一些措施来访问联系人数据,以避免抛出java.lang.SecurityException异常。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android 四大组件学习之ContentProvider四

    上节我们学习了如何去读取系统短信以及插入一条短信到系统。 本节我们学习如何获取系统的联系人,以及插入一条联系人 好,废话不多说了,直接操作。 首先和读取短信一样,先找到联系人在数据库的位置。...表拿到contact_id * content://com.android.contacts/raw_contacts是raw_contacts的访问url * */ Cursor contactId...= cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null...注意: 读取联系人,短信等信息都需要加上权限的: 既然知道如何系统获取联系人,那就应该会为系统插入一条联系人的记录。...表*/ values.put("contact_id", contactId); cr.insert(Uri.parse("content://com.android.contacts/raw_contacts

    22210

    获取系统的联系人信息

    找到源码定义规则的地方UriMatcher对象的地方,看实际规则,一般是表名,因此实际Uri路径是 content://com.android.contacts/表名 获取ContentResolver...对象,调用对象的query(uri)方法,参数:Uri就是路径 得到Cursor对象,循环Cursor对象 读取content://com.android.contacts/raw_contacts没问题...读取content://com.android.contacts/data 时出现错误,mimetype_id字段不存在,实际走的视图表,当你不确定字段的时候,调用Cursor对象的getColumnNames...和值new String[]{id} 世面上的很多应用都是取出了联系人的信息,社交应用一般都有发送信息给对方,读取系统联系人 需要定义权限:<uses-permission android:name="...://com.android.contacts/raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts

    85920

    Android读取手机通讯录联系人到自己项目

    本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下 一、主界面代码如下: <LinearLayout xmlns:android="http://schemas.android.com...:orientation="vertical" <ListView android:id="@+id/contacts_view" android:layout_width="match_parent..." android:layout_height="match_parent" </ListView </LinearLayout 简单的添加了一个listview来展示待会读取到的通讯录数据...(adapter); //判断是否开启读取通讯录的权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS...,所以记得在Manifest开启权限 <uses-permission android:name="android.permission.READ_CONTACTS"/ 好了,下面运行一下,就可以读取出你手机里面的通讯录数据了

    3.6K40

    Android开发笔记(五十四)数据共享接口ContentProvider

    在查看通讯信息的具体运用: 读取联系人 代码示例如下: private static Uri mContactUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI...resolver) { //往 raw_contacts 添加数据,并获取添加的id号 Uri raw_uri = Uri.parse("content://com.android.contacts...(raw_uri, values)); //往 data 添加数据(要根据前面获取的id号) Uri uri = Uri.parse("content://com.android.contacts...raw_uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri uri = Uri.parse("content://...("content://sms"), true, observer); 常用的Uri 总结下在Content组件中使用过程遇到的几个Uri常量: 联系人信息(不包含手机号与电子邮箱): ContactsContract.Contacts.CONTENT_URI

    1.5K20

    Android:Content Provider数据共享

    ContentProvider 属于Android应用程序的组件之一,作用是对外共享数据。...我们可以通过ContentProvider把应用的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用的数据进行添删改查。...为了读取数据,必须知道包含的数据类型 2.URI 每一个ContentProvider 都对外提供一个能够唯一标识自己数据集(data set)的公开URI, 如果一个ContentProvider管理多个数据集...所有的Content Provider 的URI 都以"content://" 开头,其中"content://"是用来标识数据是由ContentProvider管理的 Android系统提供常见ContentProvider...说明如下: Browser:读取或修改书签、浏览历史或网络搜索 CallLog:查看或更新通话记录 Contacts:获取、修改或保存联系人信息 LiveFolders:由ContentProvider

    1.2K30

    android数据对外共享的方式----contentProvider

    android下一个应用程序产生的数据要供其他程序共享有以下方式: 1.文件以可读可写的方式放在SD卡或手机内 2.数据库文件放到SD卡读写 但以上两种方式虽然也可以实现共享,但不同文件读写方法不一样...这里以数据库封装contentProvider为例进行学习。当然普通文件也一样的,对输入文件流进行封装成contentProvider即可。...; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri...(); int num = 0; switch(MATCHER.match(uri)) { case CONTACTS : num = sqdb.delete("contacts...ID为10的记录 content://com.example.databaseService.contactsProvider/contacts/10/name 表示访问contactsID为10

    71430
    领券