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

如何在android中以编程方式删除联系人

在Android中以编程方式删除联系人,可以使用Contacts Provider API。以下是一个简单的示例代码,用于删除指定联系人:

代码语言:java
复制
import android.app.Activity;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.OperationApplicationException;
import android.database.Cursor;
import android.net.Uri;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;

public class ContactsManager {

    public static void deleteContact(Context context, String contactId) {
        ContentResolver contentResolver = context.getContentResolver();
        Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, Long.parseLong(contactId));
        contentResolver.delete(uri, null, null);
    }
}

在这个示例中,我们使用了Contacts Provider API来删除指定联系人。首先,我们获取ContentResolver对象,然后使用ContentUris.withAppendedId方法构建联系人的URI。最后,我们使用ContentResolver.delete方法删除联系人。

需要注意的是,在Android 6.0(API 23)及更高版本中,我们需要在运行时请求WRITE_CONTACTS权限。可以使用以下代码来检查权限:

代码语言:java
复制
private static final int REQUEST_WRITE_CONTACTS_PERMISSION = 1;

private void requestWriteContactsPermission() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CONTACTS)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.WRITE_CONTACTS},
                REQUEST_WRITE_CONTACTS_PERMISSION);
    }
}

在这个示例中,我们使用ContextCompat.checkSelfPermission方法检查WRITE_CONTACTS权限是否已经被授权。如果没有授权,我们使用ActivityCompat.requestPermissions方法请求权限。

总之,在Android中以编程方式删除联系人,可以使用Contacts Provider API。需要注意的是,在Android 6.0及更高版本中,我们需要在运行时请求WRITE_CONTACTS权限。

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

相关·内容

在 JavaScript 中以编程方式设置文件输入

但你可以通过在输入元素上编程设置文件属性来修改文件。...可以在 w3c 规范中查看。我的方法在寻找答案时,我在 Stackoverflow 上得到了一堆不赞同的回答和否定。有一个答案告诉 PHP 用户,如果有解决方法,它最终会被 Chrome 构建者禁用。...类似于 `drop` 事件中的 `event.dataTransfer`const dataTransfer = new DataTransfer();// 将文件添加到对象的文件列表中dataTransfer.items.add...(file);// 将文件列表保存到一个新变量中const fileList = dataTransfer.files;// 将输入的 `files` 设置为文件列表fileInput.files =...fileList;根据你的使用情况,你可以触发一个 change 和/或 input 事件以模拟实际用户交互:fileInput.dispatchEvent(new Event('change', {

18000
  • Shell编程中对以`-`开头文件的三种删除方法

    偶然情况下,不小心在系统内操作新增了一个形似--xxxx的文件,如下:按照常规的删除方式,rm -rf --xxxx,始终无法删除,并且报错:相信对于很多新进的linux的学习者会遇到诸如此类的问题,...本文将会通过三种不同的方式对其进行删除1 直接只用rm方式这种方法是三种方法中最简单的,但是在各种教材中我没有看到过的,如下:rm -- -xxxx该方式针对以-开头的文件均可以正常删除,具体如下:[songj...my_testdata.txt-rw-r--r-- 1 songj developer 237 Nov 7 15:25 new_data.tar.gz2 通过find函数查找inode,调用rm进行删除该方式的原理是通过找到文件的....发现以-开头的文件被成功删除。...4 结论随着不断学习,可能删除-开头文件会有不同的方式,知识总让人越来越灵活。

    16220

    如何在一台服务器中以服务方式运行多个EasyCVR程序?

    我们在此前的文章中为大家介绍过如何在一台服务器中部署多个EasyCVR,具体配置过程,感兴趣的用户可以戳这篇文章:《流媒体集群应用与配置:如何在一台服务器部署多个EasyCVR?》...这篇文章主要介绍的是以进程的方式运行EasyCVR,今天我们来分享一下如何在一台服务器中,让多个EasyCVR以服务方式启动。...3)在easycvr.ini配置文件中添加以下字段,添加完成后保存关闭。...EasyCVR_Servicedisplay_name=EasyCVR_Servicedescription=EasyCVR_Service4)至此,两个配置文件就完成修改了,随后分别运行ServiceInstall-EasyCVR.exe,以服务方式启动...越来越多的用户也逐渐开始部署集群方案,集群作为一种高效的服务协作方式,可以实现负载均衡、分担服务器压力等功能,在视频应用服务中可发挥重要的作用。对集群感兴趣的用户可以翻阅我们往期的文章进行了解。

    85330

    【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术

    文章目录 一、Android 中的 Java 源码打包流程 1、Java 源码打包流程 2、字符串常量池 二、Android 中的字节码操作方式 一、Android 中的 Java 源码打包流程 --...-- Java 程序在 Java 虚拟机执行前 , 需要先将 Java 源码通过 javac 编译成 .class 字节码文件 , 然后才能在虚拟机中运行 ; 1、Java 源码打包流程 Android...中的 Java 源码打包流程 : 参考 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 ) 博客 ; ① 编译资源 R.java 源码 : 使用...字符串内容 偏移量 , 确定有哪些字符 ; 二、Android 中的字节码操作方式 ---- 操作字节码的 2 种方式 : AOP : Aspect Oriented Programming ,...面向切面编程 ; APT : 编译时技术 , 注解 , 注解处理器 , Android 依赖库 , 3 件套 ; 参考 Android APT 专栏 ; AOP 和 APT 都可以用于字节码插桩操作

    1.2K10

    AnyMP4 Android Data Recovery安卓数据恢复软件,帮你恢复丢失数据

    AnyMP4 Android Data Recovery Mac版是一款强大的安卓数据恢复软件,可以帮助你从Android设备恢复已删除和丢失的文本内容,例如联系人,SMS,短信,通话记录,便笺,WhatsApp...下载:AnyMP4 Android Data Recovery Mac版 取回多个数据,例如从Android手机/平板电脑到Mac 像联系人/ SMS /照片/ WhatsApp /视频/音乐/通话记录.../文档之类的数据很容易删除,并且手机有限的存储空间是无休止的需求。...当您需要一些已删除的数据(例如联系人/短信/照片)时,事情总是会发生,但是最后以搜索失败而告终。...当您丢失一些仍然非常重要的重要Android数据时,无论数据是意外删除的文本内容(如联系人,消息,通话记录,消息附件)还是丢失的媒体文件(如照片,图片,视频),都不要惊慌,音乐,甚至是诸如WhatsApp

    81410

    FonePaw Android Data Recovery Mac版

    下载:FonePaw Android Data Recovery Mac版 图片 取回多个数据,例如从Android手机/平板电脑到Mac 像联系人/ SMS /照片/ WhatsApp /视频/音乐.../通话记录/文档之类的数据很容易删除,并且手机有限的存储空间是无休止的需求。...当您需要一些已删除的数据(例如联系人/短信/照片)时,事情总是会发生,但是最后以搜索失败而告终。...当您丢失一些仍然非常重要的重要Android数据时,无论数据是意外删除的文本内容(如联系人,消息,通话记录,消息附件)还是丢失的媒体文件(如照片,图片,视频),都不要惊慌,音乐,甚至是诸如WhatsApp...全尺寸预览功能使您可以轻松地选择要恢复的某个图像,并且可以免除操作来恢复一系列照片,然后再次进行筛选和删除。

    78720

    随着 C++标准的不断更新,如何在新的项目中平衡使用现代 C++特性(如模板元编程、概念等)和传统的编程方法,以确保代码的可读性和可维护性?

    在新的项目中平衡使用现代 C++特性和传统编程方法是一个重要的问题。以下是一些建议来确保代码的可读性和可维护性: 了解现代 C++特性:首先,你需要了解现代 C++特性的概念、语法和用法。...阅读和学习关于模板元编程、概念等特性的相关资料,如C++标准文档、书籍或在线教程。 明确项目需求:在决定使用哪些特性之前,你需要了解项目的需求和目标。...确定项目是否需要使用模板元编程或概念等特性,以及它们是否能够提供明显的优势。 可读性优先:尽量保持代码的可读性。使用现代 C++特性时,要考虑到其他开发人员的理解和维护代码的需要。...遵循最佳实践:了解并遵循现代 C++的最佳实践,如使用类型推断、避免不必要的复制、使用 RAII 等。这些实践可以提高代码的可读性和可维护性。...编写测试代码:编写测试代码来确保所使用的特性能够正确地工作,并且在后续的维护过程中可以更容易地发现问题。 团队合作:确保整个团队对使用现代 C++特性的理解和使用方法达成一致。

    7100

    并发应用中的不可变数据结构

    并发并行编程是当前热点,过去我们知道使用锁synchronization来解决多线程并发访问同一个数据结构时共享问题,甚至我们怀疑数据共享方式本身是不是就错了?...所以,云计算的数据喂任务模式开始盛行,但是数据共享方式从我们开始软件第一天就已经习惯,如何在这个共享模式下实现高并发访问呢?...如果我们有一个Contact对象的集合:联系人名单集合,然后给这个名单中每个联系人发送Email: public void sendMessages(Map contactMap) { sendEmail...如果在遍历发生Email同时,有新的Contact对象加入到contactMap集合中,这时会抛出并发错误。当然,可以使用ConcurrentMap来实现Map。...该Map的特点就是遵循值对象模型的特点,集合Map作为一个值对象模型,一旦其元素发生变化,如新增或删除元素,返回一个新的集合Map对象。 获得使用该不可变Map的代码如下: ?

    64420

    程序算法|PHP、安卓、C++程序代码交流

    不过,android studio在文件—新建的菜单中 Activity生命周期及其周期方法详解 3天前 浏览: 24 评论: 0 当Activity处于应用中运行时,它的活动状态是由安卓操作系统通过栈的方式进行管理的...onTouchEvent (MotionEvent event)方法: 参数event: 参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型以及 MySql数据库创建、删除与显示版本...html、xml和json这三种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通过json-lib和gson这两个json解析库来对解析我们的json数据,以及如何在我们的Android客户端解析来自服务器端的...552f6f9e71047790645907/] 通过jsons_encode函数把数组转换成json格式时,会发现形如这样的中文乱码: \u901a\u8baf\u5f55\ufEclipse环境下的Java编程常见问题...下面是QQ的选项卡: QQ相信是国人必用,如图采用了消息、联系人、动态三个选项卡,并且为每个选项卡编写了不同的界面,这个我写的“联系人”相似,下面讲讲我是怎样实现选项卡并为每个选项制作不同交互界面的。

    2.2K10

    Android数据存储实现的5大方式

    Android数据存储实现的5大方式 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,更加系统详细的介绍了5种存储的方法和异同。...所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。...应用程序可以在Content Provider中执行如下操作: 查询数据 修改数据 添加数据 删除数据 标准的Content Provider: Android提供了一些已经在系统中实现的标准Content...phoneNo); getContentResolver().insert(numberUri, values); } 这样我们就可以调用insertRecords(name, phoneNo)的方式来向联系人信息簿中添加联系人姓名和电话号码...大多数Content Provider使用Android文件系统或SQLite数据库来保持数据,但是你也可以以任何你想要的方式来存储。 4. 定义你要返回给客户端的数据列名。

    6.8K90

    【业界】Facebook对收集用户通话和短信数据的言论作出了回应

    该发言人指出,联系人上传是可选的,应用程序的安装明确要求访问联系人的权限。用户可以通过Web浏览器访问,并从他们的个人资料中删除联系人数据。 Facebook使用电话联系数据作为其推荐算法的一部分。...在Android和Facebook Lite设备的Messenger应用程序的最新版本中,向用户提出了更明确的请求,以访问Android和Facebook Lite设备上的通话记录和短信日志。...Facebook为用户提供了一种清除其帐户中收集的联系人数据的方式,但尚不清楚这是否会删除联系人或清除通话和SMS元数据。...(缓存归档生成一次,但未在第二个请求中更新,但在删除所有联系人数据的请求两天后,联系人仍由联系人管理工具列出。) 与往常一样,如果你真的担心隐私问题,则不应与任何移动应用程序共享地址簿和通话记录数据。...如果他们不再希望使用这个功能,他们可以在设置中关闭它,或者将所有以前共享的通话和文本历史记录通过该应用程序删除。虽然我们从Android获得了一定的权限,但上传这些信息的过程一直都是选择性的。”

    1.3K70

    android 权限列表

    关闭、禁用状态栏 118 SYSTEM_ALERT_WINDOW 允许程序显示系统窗口 119 TRANSMIT_IR 允许使用设备的红外发射器,如果可用 120 UNINSTALL_SHORTCUT 删除快捷方式...129 WRITE_CONTACTS 写入联系人,但不可读取 130 WRITE_EXTERNAL_STORAGE 允许程序写入外部存储,如SD卡上写文件 131 WRITE_GSERVICES 允许程序修改...允许程序写入外部存储,如SD卡上写文件 11.android.permission.WRITE_CONTACTS写入联系人,但不可读取 12.android.permission.WRITE_CALL_LOG...删除快捷方式 21.android.permission.TRANSMIT_IR允许使用设备的红外发射器,如果可用 22.android.permission.SYSTEM_ALERT_WINDOW...,写入联系人,但不可读取 写入外部存储 android.permission.WRITE_EXTERNAL_STORAGE,允许程序写入外部存储,如SD卡上写文件 写入Google地图数据 android.permission.WRITE_GSERVICES

    1.8K30

    《移动互联网技术》 第七章 数据存取: 掌握File、SharePreferences、SQLite和ContentProvider四种数据存取方式

    4**、本单元重点难点分析** 重点 (1) 四种数据存取方式 1) 文件操作 在Android中,可以通过文件流对象来操作文件。...BufferedWriter通过缓存的方式来写入以提高存储效率。...其他应用也可以通过ContentProvider 对共享应用中的数据进行增、删、改、查,比如答题应用就能够直接访问联系人信息。Android系统内置的短信、媒体库等程序都实现了跨程序数据共享功能。...它采用完全独立于编程语言的文本格式来存储和表示数据。数据格式采用键值对的方式,可以用来表示对象、数字,还可以设置对象的属性和值。...答案: (1)Shared Preferences以 key-value 对方式保存私有的基本类型数据。 (2)File Storage在设备存储空间中保存私有数据。

    9010

    Android中ContentProvider的用法

    在Android中,如果要将一个程序的数据共享给另一个程序,在之前的Android版本,我们可以设置Android文件和SharedPreferences操作的两个模式:MODE_WORLD_READABLE...String sortOrder) 第一个参数是要查询的数据所在数据表的Uri,第二个参数是要查询的具体列的信息,第三第四个参数是要查询的数据满足的条件, 第五个参数是查询结果的排序方式...ListView控件中,这个方法中 首先调用了ContentResolver类的query方法并且传入储存联系人信息那张数据表的Uri,用于查询联系人信息那张数据表的数据,之后对查询的返回结果Cursor...进行处理,将储存联系人信息的ArrayList对象中的数据清空,并且将Cursor对象中储存的数据提取到ArrayList对象中, 之后调用适配器adapter.notifyDataSetChanged...在这里,如果你用的是模拟器,并且模拟器中没有联系人的话要添加几个联系人。不然就显示的是空界面。这个需要注意一下 如果博客中有什么不正确的地方,还请多多指点。 谢谢观看。。。

    2K10

    聚焦 Android 11: 大功告成

    感谢您在过去的时间里和我们一起深入探索 Android 开发的关键领域。下面来和我们一起回顾这些精彩内容吧: 联系人与身份 您可以探索如何通过 "聊天通知" 实现聊天快捷方式和 Bubble。...最后,您可以收听 Android Backstage 播客中系统 UI 团队关于 联系人 和 Bubbles 的访谈内容。...在 Android 11 中,我们引入了多项 隐私改进,如 单次授权,利用该功能,用户可授权应用访问设备的麦克风、摄像头或位置信息,但该访问权限仅在授权当时有效。...对于 Android 11,我们还更新了 Android 运行时,以通过 I/O 预取 加快应用的启动速度。...视频: 了解 Compose 的编程思想 视频: 了解 Jetpack Compose 如何简化 Android 界面 视频: "Compose for Existing" 应用 Android 11

    2K30

    安卓 training-使用系统权限

    但如果您的应用使用一个 intent 从用户的“联系人”应用中请求信息,则您的应用不需要任何权限,但“联系人”应用确实需要该权限。如需了解详细信息,请参阅考虑使用 intent。...请求权限 如果您的应用需要应用清单中列出的危险权限,那么,它必须要求用户授予该权限。Android 为您提供了多种权限请求方式。...之前进行,如解释应用为什么需要权限中所述。...利用本文档提供的技巧,您无需访问此类信息即可实现相同(或更好的)功能;但本文不会详细讨论权限在 Android 操作系统中的工作方式。 有关 Android 权限的一般信息,请参阅权限和用户数据。...让系统以显式方式访问。在访问敏感功能(例如,相机或麦克风)时提供连续指示,让用户知道您在收集数据,避免让他们认为您偷偷地收集数据。

    1.8K10

    Android读取短信和联系人

    短信 开始切入正题,先说短信,要从数据库中获取数据,就要了解其结构 短信数据库在data-->data中的下面路径 ?...获取联系人就比较复杂了,其表结构也比较复杂,我们获取联系人的姓名、电话号码、邮箱,要通过3张表去提取 数据库所在位置data-->data中的下面路径 ?...raw_contacts表,我们通信录中要显示的信息必须要在这里找到对应的ID,当我们删除了联系人,data表中的数据并没有删除,只是删除了证张表contact_id变为null,而不是真的删除 ?...:name="android.permission.READ_SMS"/> android:name="android.permission.READ_CONTACTS..."/> 如过是Android 6.0以上的版本还要动态获取权限 获取联系人的效果图 ?

    2.6K30

    android学习笔记----SQLite数据库

    Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show(); } } /** * 删除一条联系人信息...不同的是,当数据库不可写入的时候(如磁盘空间已满),getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法将抛出异常。    ...sqlite中是不支持删除列操作的,所以网上 alter table [table_name] drop column [col_name] 这个语句在sqlite中是无效的(这不是MySQL),而替代的方法可以如下...* * @param name 联系人姓名 * @return 返回0代表的是没有做任何记录,返回的整数int值代表删除了几条数据 */ public...table:要从其中删除的表     whereClause:删除时要应用的可选WHERE子句。传递NULL将删除所有行。     whereArgs:您可以在WHERE子句中包括?

    1K20
    领券