首页
学习
活动
专区
工具
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', {

13500

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

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

82030

Android编程沉浸式状态栏的三种实现方式详解

本文实例讲述了Android编程沉浸式状态栏的三种实现方式。...首先看下第一种方式 系统的方式沉浸式状态栏实现 步奏一 //当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 if (Build.VERSION.SDK_INT = Build.VERSION_CODES.KITKAT...接着看下第二种方式 实现思路,添加隐藏布局,然后我们动态的计算状态栏的高度,然后把这个高度设置成这个隐藏的布局的高度,便可以实现 在这里我们通过反射来获取状态栏的高度 /** * 通过反射的方式获取状态栏高度...* 一个懂得了编程乐趣的小白,希望自己 * 能够在这个道路上走的很远,也希望自己学习到的 * 知识可以帮助更多的人,分享就是学习的一种乐趣 * QQ:1069584784 */ public...视图View技巧总结》、《Android操作XML数据技巧总结》、《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android开发入门与进阶教程》及《Android

2.2K10

【字节码插桩】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.1K10

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

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

75510

FonePaw Android Data Recovery Mac版

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

73820

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

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

62920

程序算法|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.5K90

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

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

1.2K70

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.7K30

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

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

5910

AndroidContentProvider的用法

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

数据结构项目实战——通讯录

在实际应用,通讯录添加函数通常会与其他功能相结合,搜索功能、联系人详情页面等。这些功能可以为用户提供更全面的通讯录管理体验,让他们能够更方便地查找、编辑和删除联系人。...遍历通讯录:然后,程序会遍历通讯录的每个联系人,查找与输入信息匹配的联系人删除联系人:一旦找到匹配的联系人,程序会从通讯录删除联系人。...这通常是通过移动其他联系人来填补删除联系人的位置,或者通过减小通讯录的大小来实现。 更新通讯录:删除操作完成后,程序需要更新通讯录,确保数据的准确性。...,它负责将存储在数据库或内存联系人信息人类可读的形式展示出来。...通讯录的数据通常以结构化的方式存储,比如每个联系人可能包含姓名、电话号码、电子邮件地址等字段。

6710

安卓 training-使用系统权限

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

1.8K10
领券